51#ifndef GTEST_INCLUDE_GTEST_GTEST_H_
52#define GTEST_INCLUDE_GTEST_GTEST_H_
94#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
95#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
136#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
137#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
298# include <sys/types.h>
299# include <sys/stat.h>
303# include <AvailabilityMacros.h>
304# include <TargetConditionals.h>
311#define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com"
312#define GTEST_FLAG_PREFIX_ "gtest_"
313#define GTEST_FLAG_PREFIX_DASH_ "gtest-"
314#define GTEST_FLAG_PREFIX_UPPER_ "GTEST_"
315#define GTEST_NAME_ "Google Test"
316#define GTEST_PROJECT_URL_ "http://code.google.com/p/googletest/"
321# define GTEST_GCC_VER_ \
322 (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)
326#define GTEST_OS_CYGWIN 0
327#define GTEST_OS_SYMBIAN 0
328#define GTEST_OS_WINDOWS 0
329#define GTEST_OS_WINDOWS_MOBILE 0
330#define GTEST_OS_WINDOWS_MINGW 0
331#define GTEST_OS_WINDOWS_DESKTOP 0
332#define GTEST_OS_MAC 0
333#define GTEST_OS_LINUX 0
334#define GTEST_OS_LINUX_ANDROID 0
335#define GTEST_OS_ZOS 0
336#define GTEST_OS_SOLARIS 0
337#define GTEST_OS_AIX 0
338#define GTEST_OS_HPUX 0
339#define GTEST_OS_NACL 0
340#define GTEST_OS_OPENBSD 0
341#define GTEST_OS_QNX 0
342#define GTEST_OS_IOS 0
343#define GTEST_OS_IOS_SIMULATOR 0
346# undef GTEST_OS_CYGWIN
347# define GTEST_OS_CYGWIN 1
348#elif defined __SYMBIAN32__
349# undef GTEST_OS_SYMBIAN
350# define GTEST_OS_SYMBIAN 1
352# undef GTEST_OS_WINDOWS
353# define GTEST_OS_WINDOWS 1
355# undef GTEST_OS_WINDOWS_MOBILE
356# define GTEST_OS_WINDOWS_MOBILE 1
357# elif defined(__MINGW__) || defined(__MINGW32__)
358# undef GTEST_OS_WINDOWS_MINGW
359# define GTEST_OS_WINDOWS_MINGW 1
361# undef GTEST_OS_WINDOWS_DESKTOP
362# define GTEST_OS_WINDOWS_DESKTOP 1
364#elif defined __APPLE__
366# define GTEST_OS_MAC 1
369# define GTEST_OS_IOS 1
370# if TARGET_IPHONE_SIMULATOR
371# undef GTEST_OS_IOS_SIMULATOR
372# define GTEST_OS_IOS_SIMULATOR 1
375#elif defined __linux__
376# undef GTEST_OS_LINUX
377# define GTEST_OS_LINUX 1
378# if defined __ANDROID__
379# undef GTEST_OS_LINUX_ANDROID
380# define GTEST_OS_LINUX_ANDROID 1
384# define GTEST_OS_ZOS 1
385#elif defined(__sun) && defined(__SVR4)
386# undef GTEST_OS_SOLARIS
387# define GTEST_OS_SOLARIS 1
390# define GTEST_OS_AIX 1
393# define GTEST_OS_HPUX 1
394#elif defined __native_client__
396# define GTEST_OS_NACL 1
397#elif defined __OpenBSD__
398# undef GTEST_OS_OPENBSD
399# define GTEST_OS_OPENBSD 1
402# define GTEST_OS_QNX 1
405#ifndef GTEST_LANG_CXX11
410# if defined __GXX_EXPERIMENTAL_CXX0X__ || __cplusplus >= 201103L
412# define GTEST_LANG_CXX11 1
414# define GTEST_LANG_CXX11 0
427#elif !GTEST_OS_WINDOWS_MOBILE
432#if GTEST_OS_LINUX_ANDROID
434# include <android/api-level.h>
438#ifndef GTEST_HAS_POSIX_RE
439# if GTEST_OS_LINUX_ANDROID
441# define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 8)
443# define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS)
447#if GTEST_HAS_POSIX_RE
455# define GTEST_USES_POSIX_RE 1
456# define GTEST_USES_SIMPLE_RE 0
458#elif GTEST_OS_WINDOWS
462# define GTEST_USES_SIMPLE_RE 1
463# define GTEST_USES_POSIX_RE 0
469# define GTEST_USES_SIMPLE_RE 1
470# define GTEST_USES_POSIX_RE 0
474#ifndef GTEST_HAS_EXCEPTIONS
477# if defined(_MSC_VER) || defined(__BORLANDC__)
481# ifndef _HAS_EXCEPTIONS
482# define _HAS_EXCEPTIONS 1
484# define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS
485# elif defined(__GNUC__) && __EXCEPTIONS
487# define GTEST_HAS_EXCEPTIONS 1
488# elif defined(__SUNPRO_CC)
492# define GTEST_HAS_EXCEPTIONS 1
493# elif defined(__IBMCPP__) && __EXCEPTIONS
495# define GTEST_HAS_EXCEPTIONS 1
496# elif defined(__HP_aCC)
499# define GTEST_HAS_EXCEPTIONS 1
503# define GTEST_HAS_EXCEPTIONS 0
507#if !defined(GTEST_HAS_STD_STRING)
510# define GTEST_HAS_STD_STRING 1
511#elif !GTEST_HAS_STD_STRING
513# error "Google Test cannot be used where ::std::string isn't available."
516#ifndef GTEST_HAS_GLOBAL_STRING
520# define GTEST_HAS_GLOBAL_STRING 0
524#ifndef GTEST_HAS_STD_WSTRING
533# define GTEST_HAS_STD_WSTRING \
534 (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS))
538#ifndef GTEST_HAS_GLOBAL_WSTRING
541# define GTEST_HAS_GLOBAL_WSTRING \
542 (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING)
546#ifndef GTEST_HAS_RTTI
553# define GTEST_HAS_RTTI 1
555# define GTEST_HAS_RTTI 0
559# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302)
566# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && \
567 !defined(__EXCEPTIONS)
568# define GTEST_HAS_RTTI 0
570# define GTEST_HAS_RTTI 1
573# define GTEST_HAS_RTTI 0
579# elif defined(__clang__)
581# define GTEST_HAS_RTTI __has_feature(cxx_rtti)
585# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900)
588# define GTEST_HAS_RTTI 1
590# define GTEST_HAS_RTTI 0
596# define GTEST_HAS_RTTI 1
609#ifndef GTEST_HAS_PTHREAD
615# define GTEST_HAS_PTHREAD (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX \
631#ifndef GTEST_HAS_TR1_TUPLE
632# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR)
634# define GTEST_HAS_TR1_TUPLE 0
637# define GTEST_HAS_TR1_TUPLE 1
643#ifndef GTEST_USE_OWN_TR1_TUPLE
656# if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000) \
657 && !GTEST_OS_QNX && !defined(_LIBCPP_VERSION)) && !defined(_STLPORT_MAJOR) \
658 || (defined(_MSC_VER) && _MSC_VER >= 1600)
659# define GTEST_ENV_HAS_TR1_TUPLE_ 1
661# define GTEST_ENV_HAS_TR1_TUPLE_ 0
667# if GTEST_LANG_CXX11 && (!defined(__GLIBCXX__) || __GLIBCXX__ > 20110325)
668# define GTEST_ENV_HAS_STD_TUPLE_ 1
670# define GTEST_ENV_HAS_STD_TUPLE_ 0
673# if GTEST_ENV_HAS_TR1_TUPLE_ || GTEST_ENV_HAS_STD_TUPLE_
674# define GTEST_USE_OWN_TR1_TUPLE 0
676# define GTEST_USE_OWN_TR1_TUPLE 1
677# undef GTEST_HAS_TR1_TUPLE
678# define GTEST_HAS_TR1_TUPLE 1
686#if GTEST_HAS_TR1_TUPLE
688# if GTEST_USE_OWN_TR1_TUPLE
726#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
727#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
736#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590)
737# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public:
739# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \
740 template <GTEST_10_TYPENAMES_(U)> friend class tuple; \
745#define GTEST_0_TUPLE_(T) tuple<>
746#define GTEST_1_TUPLE_(T) tuple<T##0, void, void, void, void, void, void, \
748#define GTEST_2_TUPLE_(T) tuple<T##0, T##1, void, void, void, void, void, \
750#define GTEST_3_TUPLE_(T) tuple<T##0, T##1, T##2, void, void, void, void, \
752#define GTEST_4_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, void, void, void, \
754#define GTEST_5_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, void, void, \
756#define GTEST_6_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, void, \
758#define GTEST_7_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
760#define GTEST_8_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
762#define GTEST_9_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
764#define GTEST_10_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
768#define GTEST_0_TYPENAMES_(T)
769#define GTEST_1_TYPENAMES_(T) typename T##0
770#define GTEST_2_TYPENAMES_(T) typename T##0, typename T##1
771#define GTEST_3_TYPENAMES_(T) typename T##0, typename T##1, typename T##2
772#define GTEST_4_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
774#define GTEST_5_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
775 typename T##3, typename T##4
776#define GTEST_6_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
777 typename T##3, typename T##4, typename T##5
778#define GTEST_7_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
779 typename T##3, typename T##4, typename T##5, typename T##6
780#define GTEST_8_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
781 typename T##3, typename T##4, typename T##5, typename T##6, typename T##7
782#define GTEST_9_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
783 typename T##3, typename T##4, typename T##5, typename T##6, \
784 typename T##7, typename T##8
785#define GTEST_10_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
786 typename T##3, typename T##4, typename T##5, typename T##6, \
787 typename T##7, typename T##8, typename T##9
795template <
typename T0 =
void,
typename T1 =
void,
typename T2 =
void,
796 typename T3 =
void,
typename T4 =
void,
typename T5 =
void,
797 typename T6 =
void,
typename T7 =
void,
typename T8 =
void,
803namespace gtest_internal {
812#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef<T>::type
822#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef<T>::type
825template <
int k>
class Get;
829template <
bool kIndexVal
id,
int kIndex,
class Tuple>
832template <GTEST_10_TYPENAMES_(T)>
837template <GTEST_10_TYPENAMES_(T)>
842template <GTEST_10_TYPENAMES_(T)>
847template <GTEST_10_TYPENAMES_(T)>
852template <GTEST_10_TYPENAMES_(T)>
857template <GTEST_10_TYPENAMES_(T)>
862template <GTEST_10_TYPENAMES_(T)>
867template <GTEST_10_TYPENAMES_(T)>
872template <GTEST_10_TYPENAMES_(T)>
877template <GTEST_10_TYPENAMES_(T)>
892template <GTEST_1_TYPENAMES_(T)>
893class GTEST_1_TUPLE_(T) {
895 template <
int k>
friend class gtest_internal::Get;
901 tuple(
const tuple& t) : f0_(t.f0_) {}
903 template <GTEST_1_TYPENAMES_(U)>
906 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
908 template <GTEST_1_TYPENAMES_(U)>
915 template <GTEST_1_TYPENAMES_(U)>
924template <GTEST_2_TYPENAMES_(T)>
925class GTEST_2_TUPLE_(T) {
927 template <
int k>
friend class gtest_internal::Get;
929 tuple() : f0_(), f1_() {}
934 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_) {}
936 template <GTEST_2_TYPENAMES_(U)>
938 template <
typename U0,
typename U1>
939 tuple(const ::std::pair<U0, U1>& p) : f0_(p.
first), f1_(p.
second) {}
941 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
943 template <GTEST_2_TYPENAMES_(U)>
947 template <
typename U0,
typename U1>
948 tuple& operator=(const ::std::pair<U0, U1>& p) {
956 template <GTEST_2_TYPENAMES_(U)>
967template <GTEST_3_TYPENAMES_(T)>
968class GTEST_3_TUPLE_(T) {
970 template <
int k>
friend class gtest_internal::Get;
972 tuple() : f0_(), f1_(), f2_() {}
977 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {}
979 template <GTEST_3_TYPENAMES_(U)>
980 tuple(
const GTEST_3_TUPLE_(
U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {}
982 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
984 template <GTEST_3_TYPENAMES_(U)>
991 template <GTEST_3_TYPENAMES_(U)>
1004template <GTEST_4_TYPENAMES_(T)>
1005class GTEST_4_TUPLE_(T) {
1007 template <
int k>
friend class gtest_internal::Get;
1009 tuple() : f0_(), f1_(), f2_(), f3_() {}
1015 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_) {}
1017 template <GTEST_4_TYPENAMES_(U)>
1018 tuple(
const GTEST_4_TUPLE_(
U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
1021 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
1023 template <GTEST_4_TYPENAMES_(U)>
1030 template <GTEST_4_TYPENAMES_(U)>
1045template <GTEST_5_TYPENAMES_(T)>
1046class GTEST_5_TUPLE_(T) {
1048 template <
int k>
friend class gtest_internal::Get;
1050 tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {}
1056 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
1059 template <GTEST_5_TYPENAMES_(U)>
1060 tuple(
const GTEST_5_TUPLE_(
U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
1061 f3_(t.f3_), f4_(t.f4_) {}
1063 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
1065 template <GTEST_5_TYPENAMES_(U)>
1072 template <GTEST_5_TYPENAMES_(U)>
1089template <GTEST_6_TYPENAMES_(T)>
1090class GTEST_6_TUPLE_(T) {
1092 template <
int k>
friend class gtest_internal::Get;
1094 tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {}
1101 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
1102 f4_(t.f4_), f5_(t.f5_) {}
1104 template <GTEST_6_TYPENAMES_(U)>
1105 tuple(
const GTEST_6_TUPLE_(
U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
1106 f3_(t.f3_), f4_(t.f4_), f5_(t.f5_) {}
1108 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
1110 template <GTEST_6_TYPENAMES_(U)>
1117 template <GTEST_6_TYPENAMES_(U)>
1136template <GTEST_7_TYPENAMES_(T)>
1137class GTEST_7_TUPLE_(T) {
1139 template <
int k>
friend class gtest_internal::Get;
1141 tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {}
1146 f3_(
f3), f4_(
f4), f5_(
f5), f6_(
f6) {}
1148 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
1149 f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {}
1151 template <GTEST_7_TYPENAMES_(U)>
1152 tuple(
const GTEST_7_TUPLE_(
U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
1153 f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {}
1155 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
1157 template <GTEST_7_TYPENAMES_(U)>
1164 template <GTEST_7_TYPENAMES_(U)>
1185template <GTEST_8_TYPENAMES_(T)>
1186class GTEST_8_TUPLE_(T) {
1188 template <
int k>
friend class gtest_internal::Get;
1190 tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {}
1196 f5_(
f5), f6_(
f6), f7_(
f7) {}
1198 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
1199 f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {}
1201 template <GTEST_8_TYPENAMES_(U)>
1202 tuple(
const GTEST_8_TUPLE_(
U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
1203 f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {}
1205 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
1207 template <GTEST_8_TYPENAMES_(U)>
1214 template <GTEST_8_TYPENAMES_(U)>
1237template <GTEST_9_TYPENAMES_(T)>
1238class GTEST_9_TUPLE_(T) {
1240 template <
int k>
friend class gtest_internal::Get;
1242 tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {}
1248 f5_(
f5), f6_(
f6), f7_(
f7), f8_(
f8) {}
1250 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
1251 f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {}
1253 template <GTEST_9_TYPENAMES_(U)>
1254 tuple(
const GTEST_9_TUPLE_(
U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
1255 f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {}
1257 tuple& operator=(
const tuple& t) {
return CopyFrom(t); }
1259 template <GTEST_9_TYPENAMES_(U)>
1266 template <GTEST_9_TYPENAMES_(U)>
1291template <GTEST_10_TYPENAMES_(T)>
1296 tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(),
1305 tuple(
const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
1306 f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), f9_(t.f9_) {}
1308 template <GTEST_10_TYPENAMES_(U)>
1310 f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_),
1315 template <GTEST_10_TYPENAMES_(U)>
1322 template <GTEST_10_TYPENAMES_(U)>
1357template <GTEST_1_TYPENAMES_(T)>
1362template <GTEST_2_TYPENAMES_(T)>
1367template <GTEST_3_TYPENAMES_(T)>
1372template <GTEST_4_TYPENAMES_(T)>
1378template <GTEST_5_TYPENAMES_(T)>
1384template <GTEST_6_TYPENAMES_(T)>
1390template <GTEST_7_TYPENAMES_(T)>
1392 const T3&
f3,
const T4&
f4,
const T5&
f5,
const T6&
f6) {
1396template <GTEST_8_TYPENAMES_(T)>
1398 const T3&
f3,
const T4&
f4,
const T5&
f5,
const T6&
f6,
const T7&
f7) {
1402template <GTEST_9_TYPENAMES_(T)>
1404 const T3&
f3,
const T4&
f4,
const T5&
f5,
const T6&
f6,
const T7&
f7,
1409template <GTEST_10_TYPENAMES_(T)>
1411 const T3&
f3,
const T4&
f4,
const T5&
f5,
const T6&
f6,
const T7&
f7,
1420template <GTEST_0_TYPENAMES_(T)>
1425template <GTEST_1_TYPENAMES_(T)>
1430template <GTEST_2_TYPENAMES_(T)>
1435template <GTEST_3_TYPENAMES_(T)>
1440template <GTEST_4_TYPENAMES_(T)>
1445template <GTEST_5_TYPENAMES_(T)>
1450template <GTEST_6_TYPENAMES_(T)>
1455template <GTEST_7_TYPENAMES_(T)>
1460template <GTEST_8_TYPENAMES_(T)>
1465template <GTEST_9_TYPENAMES_(T)>
1470template <GTEST_10_TYPENAMES_(T)>
1475template <
int k,
class Tuple>
1481#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element<k, Tuple >::type
1485namespace gtest_internal {
1490 template <
class Tuple>
1492 Field(Tuple& t) {
return t.f0_; }
1494 template <
class Tuple>
1496 ConstField(
const Tuple& t) {
return t.f0_; }
1502 template <
class Tuple>
1504 Field(Tuple& t) {
return t.f1_; }
1506 template <
class Tuple>
1508 ConstField(
const Tuple& t) {
return t.f1_; }
1514 template <
class Tuple>
1516 Field(Tuple& t) {
return t.f2_; }
1518 template <
class Tuple>
1520 ConstField(
const Tuple& t) {
return t.f2_; }
1526 template <
class Tuple>
1528 Field(Tuple& t) {
return t.f3_; }
1530 template <
class Tuple>
1532 ConstField(
const Tuple& t) {
return t.f3_; }
1538 template <
class Tuple>
1540 Field(Tuple& t) {
return t.f4_; }
1542 template <
class Tuple>
1544 ConstField(
const Tuple& t) {
return t.f4_; }
1550 template <
class Tuple>
1552 Field(Tuple& t) {
return t.f5_; }
1554 template <
class Tuple>
1556 ConstField(
const Tuple& t) {
return t.f5_; }
1562 template <
class Tuple>
1564 Field(Tuple& t) {
return t.f6_; }
1566 template <
class Tuple>
1568 ConstField(
const Tuple& t) {
return t.f6_; }
1574 template <
class Tuple>
1576 Field(Tuple& t) {
return t.f7_; }
1578 template <
class Tuple>
1580 ConstField(
const Tuple& t) {
return t.f7_; }
1586 template <
class Tuple>
1588 Field(Tuple& t) {
return t.f8_; }
1590 template <
class Tuple>
1592 ConstField(
const Tuple& t) {
return t.f8_; }
1598 template <
class Tuple>
1600 Field(Tuple& t) {
return t.f9_; }
1602 template <
class Tuple>
1604 ConstField(
const Tuple& t) {
return t.f9_; }
1609template <
int k, GTEST_10_TYPENAMES_(T)>
1615template <
int k, GTEST_10_TYPENAMES_(T)>
1625namespace gtest_internal {
1631template <
int kSize1,
int kSize2>
1636 template <
class Tuple1,
class Tuple2>
1637 static bool Eq(
const Tuple1& ,
const Tuple2& ) {
1644 template <
class Tuple1,
class Tuple2>
1645 static bool Eq(
const Tuple1& t1,
const Tuple2& t2) {
1647 ::std::tr1::get<
k - 1>(t1) == ::std::tr1::get<k - 1>(t2);
1653template <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)>
1661template <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)>
1671#undef GTEST_0_TUPLE_
1672#undef GTEST_1_TUPLE_
1673#undef GTEST_2_TUPLE_
1674#undef GTEST_3_TUPLE_
1675#undef GTEST_4_TUPLE_
1676#undef GTEST_5_TUPLE_
1677#undef GTEST_6_TUPLE_
1678#undef GTEST_7_TUPLE_
1679#undef GTEST_8_TUPLE_
1680#undef GTEST_9_TUPLE_
1681#undef GTEST_10_TUPLE_
1683#undef GTEST_0_TYPENAMES_
1684#undef GTEST_1_TYPENAMES_
1685#undef GTEST_2_TYPENAMES_
1686#undef GTEST_3_TYPENAMES_
1687#undef GTEST_4_TYPENAMES_
1688#undef GTEST_5_TYPENAMES_
1689#undef GTEST_6_TYPENAMES_
1690#undef GTEST_7_TYPENAMES_
1691#undef GTEST_8_TYPENAMES_
1692#undef GTEST_9_TYPENAMES_
1693#undef GTEST_10_TYPENAMES_
1695#undef GTEST_DECLARE_TUPLE_AS_FRIEND_
1697#undef GTEST_ADD_REF_
1698#undef GTEST_TUPLE_ELEMENT_
1701# elif GTEST_ENV_HAS_STD_TUPLE_
1712using ::std::tuple_element;
1713using ::std::tuple_size;
1717# elif GTEST_OS_SYMBIAN
1724# ifdef BOOST_HAS_TR1_TUPLE
1725# undef BOOST_HAS_TR1_TUPLE
1730# define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED
1733# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000)
1737# if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
1743# define _TR1_FUNCTIONAL 1
1744# include <tr1/tuple>
1745# undef _TR1_FUNCTIONAL
1748# include <tr1/tuple>
1763#ifndef GTEST_HAS_CLONE
1766# if GTEST_OS_LINUX && !defined(__ia64__)
1767# if GTEST_OS_LINUX_ANDROID
1769# if (defined(__arm__) || defined(__mips__)) && __ANDROID_API__ >= 9
1770# define GTEST_HAS_CLONE 1
1772# define GTEST_HAS_CLONE 0
1775# define GTEST_HAS_CLONE 1
1778# define GTEST_HAS_CLONE 0
1785#ifndef GTEST_HAS_STREAM_REDIRECTION
1788# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN
1789# define GTEST_HAS_STREAM_REDIRECTION 0
1791# define GTEST_HAS_STREAM_REDIRECTION 1
1799#if (GTEST_OS_LINUX || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \
1800 (GTEST_OS_MAC && !GTEST_OS_IOS) || GTEST_OS_IOS_SIMULATOR || \
1801 (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \
1802 GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX || \
1803 GTEST_OS_OPENBSD || GTEST_OS_QNX)
1804# define GTEST_HAS_DEATH_TEST 1
1807# define GTEST_HAS_DEATH_TEST 0
1813#define GTEST_HAS_PARAM_TEST 1
1819#if defined(__GNUC__) || (_MSC_VER >= 1400) || defined(__SUNPRO_CC) || \
1820 defined(__IBMCPP__) || defined(__HP_aCC)
1821# define GTEST_HAS_TYPED_TEST 1
1822# define GTEST_HAS_TYPED_TEST_P 1
1829#if GTEST_HAS_PARAM_TEST && GTEST_HAS_TR1_TUPLE && !defined(__SUNPRO_CC)
1830# define GTEST_HAS_COMBINE 1
1834#define GTEST_WIDE_STRING_USES_UTF16_ \
1835 (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN || GTEST_OS_AIX)
1839# define GTEST_CAN_STREAM_RESULTS_ 1
1841# define GTEST_CAN_STREAM_RESULTS_ 0
1854#ifdef __INTEL_COMPILER
1855# define GTEST_AMBIGUOUS_ELSE_BLOCKER_
1857# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default:
1871#if defined(__GNUC__) && !defined(COMPILER_ICC)
1872# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
1874# define GTEST_ATTRIBUTE_UNUSED_
1879#define GTEST_DISALLOW_ASSIGN_(type)\
1880 void operator=(type const &)
1884#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)\
1885 type(type const &);\
1886 GTEST_DISALLOW_ASSIGN_(type)
1893#if defined(__GNUC__) && (GTEST_GCC_VER_ >= 30400) && !defined(COMPILER_ICC)
1894# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result))
1896# define GTEST_MUST_USE_RESULT_
1902#ifndef GTEST_HAS_SEH
1905# if defined(_MSC_VER) || defined(__BORLANDC__)
1907# define GTEST_HAS_SEH 1
1910# define GTEST_HAS_SEH 0
1917# if GTEST_LINKED_AS_SHARED_LIBRARY
1918# define GTEST_API_ __declspec(dllimport)
1919# elif GTEST_CREATE_SHARED_LIBRARY
1920# define GTEST_API_ __declspec(dllexport)
1931# define GTEST_NO_INLINE_ __attribute__((noinline))
1933# define GTEST_NO_INLINE_
1937#if defined(__GLIBCXX__) || defined(_LIBCPP_VERSION)
1938# define GTEST_HAS_CXXABI_H_ 1
1940# define GTEST_HAS_CXXABI_H_ 0
1973#define GTEST_COMPILE_ASSERT_(expr, msg) \
1974 typedef ::testing::internal::CompileAssert<(static_cast<bool>(expr))> \
1975 msg[static_cast<bool>(expr) ? 1 : -1] GTEST_ATTRIBUTE_UNUSED_
2021template <
typename T1,
typename T2>
2024template <
typename T>
2027#if GTEST_HAS_GLOBAL_STRING
2033#if GTEST_HAS_GLOBAL_WSTRING
2035#elif GTEST_HAS_STD_WSTRING
2047template <
typename T>
2060 T*
const ptr = ptr_;
2093#if GTEST_HAS_GLOBAL_STRING
2099 RE(
const char* regex) { Init(regex); }
2113 return FullMatch(
str.c_str(), re);
2116 return PartialMatch(
str.c_str(), re);
2119#if GTEST_HAS_GLOBAL_STRING
2122 return FullMatch(
str.c_str(), re);
2125 return PartialMatch(
str.c_str(), re);
2134 void Init(
const char* regex);
2139 const char* pattern_;
2142#if GTEST_USES_POSIX_RE
2144 regex_t full_regex_;
2145 regex_t partial_regex_;
2149 const char* full_pattern_;
2197#define GTEST_LOG_(severity) \
2198 ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \
2199 __FILE__, __LINE__).GetStream()
2218#define GTEST_CHECK_(condition) \
2219 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
2220 if (::testing::internal::IsTrue(condition)) \
2223 GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
2230#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \
2231 if (const int gtest_error = (posix_call)) \
2232 GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
2255template<
typename To>
2279template<
typename To,
typename From>
2287 ::testing::internal::ImplicitCast_<From*>(to);
2294 return static_cast<To
>(f);
2302template <
class Derived,
class Base>
2306 return dynamic_cast<Derived*
>(base);
2308 return static_cast<Derived*
>(base);
2312#if GTEST_HAS_STREAM_REDIRECTION
2328#if GTEST_HAS_DEATH_TEST
2330const ::std::vector<testing::internal::string>& GetInjectableArgvs();
2331void SetInjectableArgvs(const ::std::vector<testing::internal::string>*
2335extern ::std::vector<testing::internal::string> g_argvs;
2341#if GTEST_HAS_PTHREAD
2346inline void SleepMilliseconds(
int n) {
2347 const timespec time = {
2351 nanosleep(&time,
NULL);
2362 Notification() : notified_(
false) {
2366 pthread_mutex_destroy(&mutex_);
2372 pthread_mutex_lock(&mutex_);
2374 pthread_mutex_unlock(&mutex_);
2379 void WaitForNotification() {
2381 pthread_mutex_lock(&mutex_);
2382 const bool notified = notified_;
2383 pthread_mutex_unlock(&mutex_);
2386 SleepMilliseconds(10);
2391 pthread_mutex_t mutex_;
2402class ThreadWithParamBase {
2404 virtual ~ThreadWithParamBase() {}
2405 virtual void Run() = 0;
2414extern "C" inline void* ThreadFuncWithCLinkage(
void* thread) {
2415 static_cast<ThreadWithParamBase*
>(thread)->Run();
2431template <
typename T>
2432class ThreadWithParam :
public ThreadWithParamBase {
2434 typedef void (*UserThreadFunc)(
T);
2437 UserThreadFunc
func,
T param, Notification* thread_can_start)
2440 thread_can_start_(thread_can_start),
2442 ThreadWithParamBase*
const base =
this;
2446 pthread_create(&thread_, 0, &ThreadFuncWithCLinkage, base));
2448 ~ThreadWithParam() { Join(); }
2457 virtual void Run() {
2458 if (thread_can_start_ !=
NULL)
2459 thread_can_start_->WaitForNotification();
2464 const UserThreadFunc func_;
2468 Notification*
const thread_can_start_;
2499 owner_ = pthread_self();
2515 void AssertHeld()
const {
2516 GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self()))
2517 <<
"The current thread is not holding the mutex @" <<
this;
2526 pthread_mutex_t mutex_;
2538# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
2539 extern ::testing::internal::MutexBase mutex
2547# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
2548 ::testing::internal::MutexBase mutex = { PTHREAD_MUTEX_INITIALIZER, false }
2552class Mutex :
public MutexBase {
2569class GTestMutexLock {
2571 explicit GTestMutexLock(MutexBase* mutex)
2572 : mutex_(mutex) { mutex_->Lock(); }
2574 ~GTestMutexLock() { mutex_->Unlock(); }
2577 MutexBase*
const mutex_;
2590class ThreadLocalValueHolderBase {
2592 virtual ~ThreadLocalValueHolderBase() {}
2597extern "C" inline void DeleteThreadLocalValue(
void* value_holder) {
2598 delete static_cast<ThreadLocalValueHolderBase*
>(value_holder);
2630template <
typename T>
2633 ThreadLocal() : key_(CreateKey()),
2635 explicit ThreadLocal(
const T&
value) : key_(CreateKey()),
2640 DeleteThreadLocalValue(pthread_getspecific(key_));
2647 T* pointer() {
return GetOrCreateValue(); }
2648 const T* pointer()
const {
return GetOrCreateValue(); }
2649 const T& get()
const {
return *pointer(); }
2654 class ValueHolder :
public ThreadLocalValueHolderBase {
2656 explicit ValueHolder(
const T&
value) : value_(
value) {}
2658 T* pointer() {
return &value_; }
2665 static pthread_key_t CreateKey() {
2670 pthread_key_create(&
key, &DeleteThreadLocalValue));
2674 T* GetOrCreateValue()
const {
2675 ThreadLocalValueHolderBase*
const holder =
2676 static_cast<ThreadLocalValueHolderBase*
>(pthread_getspecific(key_));
2677 if (holder !=
NULL) {
2678 return CheckedDowncastToActualType<ValueHolder>(holder)->pointer();
2681 ValueHolder*
const new_holder =
new ValueHolder(default_);
2682 ThreadLocalValueHolderBase*
const holder_base = new_holder;
2684 return new_holder->pointer();
2688 const pthread_key_t key_;
2694# define GTEST_IS_THREADSAFE 1
2711# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
2712 extern ::testing::internal::Mutex mutex
2714# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex
2723template <
typename T>
2730 const T&
get()
const {
return value_; }
2738# define GTEST_IS_THREADSAFE 0
2752#if defined(__SYMBIAN32__) || defined(__IBMCPP__) || defined(__SUNPRO_CC)
2755# define GTEST_ELLIPSIS_NEEDS_POD_ 1
2757# define GTEST_CAN_COMPARE_NULL 1
2764#if defined(__SYMBIAN32__) || defined(__IBMCPP__)
2765# define GTEST_NEEDS_IS_POINTER_ 1
2768template <
bool bool_value>
2778template <
typename T>
2781template <
typename T>
2784template <
typename Iterator>
2789template <
typename T>
2794template <
typename T>
2800# define GTEST_PATH_SEP_ "\\"
2801# define GTEST_HAS_ALT_PATH_SEP_ 1
2805# define GTEST_PATH_SEP_ "/"
2806# define GTEST_HAS_ALT_PATH_SEP_ 0
2818 return isalpha(
static_cast<unsigned char>(ch)) != 0;
2821 return isalnum(
static_cast<unsigned char>(ch)) != 0;
2824 return isdigit(
static_cast<unsigned char>(ch)) != 0;
2827 return islower(
static_cast<unsigned char>(ch)) != 0;
2830 return isspace(
static_cast<unsigned char>(ch)) != 0;
2833 return isupper(
static_cast<unsigned char>(ch)) != 0;
2836 return isxdigit(
static_cast<unsigned char>(ch)) != 0;
2839 const unsigned char low_byte =
static_cast<unsigned char>(ch);
2840 return ch == low_byte && isxdigit(low_byte) != 0;
2844 return static_cast<char>(tolower(
static_cast<unsigned char>(ch)));
2847 return static_cast<char>(toupper(
static_cast<unsigned char>(ch)));
2865inline int IsATTY(
int fd) {
return isatty(fd); }
2866inline int StrCaseCmp(
const char* s1,
const char* s2) {
2867 return stricmp(s1, s2);
2869inline char*
StrDup(
const char*
src) {
return strdup(
src); }
2871# if GTEST_OS_WINDOWS_MOBILE
2872inline int IsATTY(
int ) {
return 0; }
2874inline int IsATTY(
int fd) {
return _isatty(fd); }
2876inline int StrCaseCmp(
const char* s1,
const char* s2) {
2877 return _stricmp(s1, s2);
2879inline char*
StrDup(
const char*
src) {
return _strdup(
src); }
2882# if GTEST_OS_WINDOWS_MOBILE
2883inline int FileNo(FILE* file) {
return reinterpret_cast<int>(_fileno(file)); }
2887inline int FileNo(FILE* file) {
return _fileno(file); }
2888inline int Stat(
const char* path,
StatStruct* buf) {
return _stat(path, buf); }
2889inline int RmDir(
const char* dir) {
return _rmdir(dir); }
2891 return (_S_IFDIR & st.st_mode) != 0;
2899inline int FileNo(FILE* file) {
return fileno(file); }
2900inline int IsATTY(
int fd) {
return isatty(fd); }
2903 return strcasecmp(s1, s2);
2906inline int RmDir(
const char* dir) {
return rmdir(dir); }
2915# pragma warning(push)
2916# pragma warning(disable:4996)
2920 return strncpy(dest,
src,
n);
2927#if !GTEST_OS_WINDOWS_MOBILE
2928inline int ChDir(
const char* dir) {
return chdir(dir); }
2930inline FILE*
FOpen(
const char* path,
const char* mode) {
2931 return fopen(path, mode);
2933#if !GTEST_OS_WINDOWS_MOBILE
2934inline FILE *
FReopen(
const char* path,
const char* mode, FILE* stream) {
2935 return freopen(path, mode, stream);
2937inline FILE*
FDOpen(
int fd,
const char* mode) {
return fdopen(fd, mode); }
2939inline int FClose(FILE* fp) {
return fclose(fp); }
2940#if !GTEST_OS_WINDOWS_MOBILE
2942 return static_cast<int>(read(fd, buf,
count));
2945 return static_cast<int>(write(fd, buf,
count));
2947inline int Close(
int fd) {
return close(fd); }
2948inline const char*
StrError(
int errnum) {
return strerror(errnum); }
2951#if GTEST_OS_WINDOWS_MOBILE
2954#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9)
2957 const char*
const env = getenv(
name);
2958 return (env !=
NULL && env[0] !=
'\0') ? env :
NULL;
2960 return getenv(
name);
2965# pragma warning(pop)
2968#if GTEST_OS_WINDOWS_MOBILE
2984#if defined(_MSC_VER) && _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE
2986# define GTEST_SNPRINTF_(buffer, size, format, ...) \
2987 _snprintf_s(buffer, size, size, format, __VA_ARGS__)
2988#elif defined(_MSC_VER)
2991# define GTEST_SNPRINTF_ _snprintf
2993# define GTEST_SNPRINTF_ snprintf
3024template <
size_t size>
3049 typedef __int64
Int;
3050 typedef unsigned __int64
UInt;
3067#define GTEST_FLAG(name) FLAGS_gtest_##name
3070#define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name)
3071#define GTEST_DECLARE_int32_(name) \
3072 GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name)
3073#define GTEST_DECLARE_string_(name) \
3074 GTEST_API_ extern ::std::string GTEST_FLAG(name)
3077#define GTEST_DEFINE_bool_(name, default_val, doc) \
3078 GTEST_API_ bool GTEST_FLAG(name) = (default_val)
3079#define GTEST_DEFINE_int32_(name, default_val, doc) \
3080 GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val)
3081#define GTEST_DEFINE_string_(name, default_val, doc) \
3082 GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val)
3085#define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks)
3086#define GTEST_LOCK_EXCLUDED_(locks)
3109# include <sys/types.h>
3110# include <sys/wait.h>
3114#if GTEST_HAS_EXCEPTIONS
3115# include <stdexcept>
3170#ifndef GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
3171#define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
3212 typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&);
3230 template <
typename T>
3237 template <
typename T>
3253 using ::operator <<;
3271 template <
typename T>
3273 if (pointer ==
NULL) {
3295 return *
this << (
b ?
"true" :
"false");
3303#if GTEST_HAS_STD_WSTRING
3309#if GTEST_HAS_GLOBAL_WSTRING
3328 template <
typename T>
3330 if (pointer ==
NULL) {
3336 template <
typename T>
3341 using ::operator <<;
3347 const internal::scoped_ptr< ::std::stringstream> ss_;
3351 void operator=(
const Message&);
3365template <
typename T>
3367 return (
Message() << streamable).GetString();
3414#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
3415#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
3443#if GTEST_OS_WINDOWS_MOBILE
3456 static LPCWSTR AnsiToUtf16(
const char* c_str);
3466 static const char* Utf16ToAnsi(LPCWSTR utf16_str);
3512 const wchar_t* rhs);
3579#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
3580#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
3612 pathname_ = rhs.pathname_;
3616 const char*
c_str()
const {
return pathname_.c_str(); }
3628 const char* extension);
3646 const char* extension);
3649 bool IsEmpty()
const {
return pathname_.empty(); }
3736 const char* FindLastPathSeparator()
const;
3788#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
3789#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
3794# if GTEST_HAS_CXXABI_H_
3796# elif defined(__HP_aCC)
3797# include <acxx_demangle.h>
3806template <
typename T>
3810 const char*
const name =
typeid(
T).
name();
3811# if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
3815# if GTEST_HAS_CXXABI_H_
3816 using abi::__cxa_demangle;
3818 char*
const readable_name = __cxa_demangle(
name, 0, 0, &
status);
3820 free(readable_name);
3833#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
3839template <
typename T1,
typename T2>
3842template <
typename T>
3843struct AssertTypeEq<
T,
T> {
3865template <
typename T1>
3868 typedef Types0 Tail;
3870template <
typename T1,
typename T2>
3873 typedef Types1<T2> Tail;
3876template <
typename T1,
typename T2,
typename T3>
3879 typedef Types2<T2, T3> Tail;
3882template <
typename T1,
typename T2,
typename T3,
typename T4>
3885 typedef Types3<T2, T3, T4> Tail;
3888template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
3891 typedef Types4<T2, T3, T4, T5> Tail;
3894template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3898 typedef Types5<T2, T3, T4, T5, T6> Tail;
3901template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3902 typename T6,
typename T7>
3905 typedef Types6<T2, T3, T4, T5, T6, T7> Tail;
3908template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3909 typename T6,
typename T7,
typename T8>
3912 typedef Types7<T2, T3, T4, T5, T6, T7, T8> Tail;
3915template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3916 typename T6,
typename T7,
typename T8,
typename T9>
3919 typedef Types8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
3922template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3923 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
3926 typedef Types9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
3929template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3930 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
3934 typedef Types10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
3937template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3938 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
3939 typename T11,
typename T12>
3942 typedef Types11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
3945template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3946 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
3947 typename T11,
typename T12,
typename T13>
3950 typedef Types12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
3953template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3954 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
3955 typename T11,
typename T12,
typename T13,
typename T14>
3958 typedef Types13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Tail;
3961template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3962 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
3963 typename T11,
typename T12,
typename T13,
typename T14,
typename T15>
3966 typedef Types14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
3970template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3971 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
3972 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
3976 typedef Types15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3980template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3981 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
3982 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
3983 typename T16,
typename T17>
3986 typedef Types16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3990template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
3991 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
3992 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
3993 typename T16,
typename T17,
typename T18>
3996 typedef Types17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3997 T16, T17, T18> Tail;
4000template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4001 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4002 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4003 typename T16,
typename T17,
typename T18,
typename T19>
4006 typedef Types18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4007 T16, T17, T18, T19> Tail;
4010template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4011 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4012 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4013 typename T16,
typename T17,
typename T18,
typename T19,
typename T20>
4016 typedef Types19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4017 T16, T17, T18, T19, T20> Tail;
4020template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4021 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4022 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4023 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4027 typedef Types20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4028 T16, T17, T18, T19, T20, T21> Tail;
4031template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4032 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4033 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4034 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4035 typename T21,
typename T22>
4038 typedef Types21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4039 T16, T17, T18, T19, T20, T21, T22> Tail;
4042template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4043 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4044 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4045 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4046 typename T21,
typename T22,
typename T23>
4049 typedef Types22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4050 T16, T17, T18, T19, T20, T21, T22, T23> Tail;
4053template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4054 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4055 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4056 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4057 typename T21,
typename T22,
typename T23,
typename T24>
4060 typedef Types23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4061 T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
4064template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4065 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4066 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4067 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4068 typename T21,
typename T22,
typename T23,
typename T24,
typename T25>
4071 typedef Types24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4072 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
4075template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4076 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4077 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4078 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4079 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4083 typedef Types25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4084 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
4087template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4088 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4089 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4090 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4091 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4092 typename T26,
typename T27>
4095 typedef Types26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4096 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
4099template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4100 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4101 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4102 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4103 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4104 typename T26,
typename T27,
typename T28>
4107 typedef Types27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4108 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Tail;
4111template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4112 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4113 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4114 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4115 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4116 typename T26,
typename T27,
typename T28,
typename T29>
4119 typedef Types28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4120 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
4124template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4125 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4126 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4127 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4128 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4129 typename T26,
typename T27,
typename T28,
typename T29,
typename T30>
4132 typedef Types29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4133 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4137template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4138 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4139 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4140 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4141 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4142 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4146 typedef Types30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4147 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4151template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4152 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4153 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4154 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4155 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4156 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4157 typename T31,
typename T32>
4160 typedef Types31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4161 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4162 T30, T31, T32> Tail;
4165template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4166 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4167 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4168 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4169 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4170 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4171 typename T31,
typename T32,
typename T33>
4174 typedef Types32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4175 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4176 T30, T31, T32, T33> Tail;
4179template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4180 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4181 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4182 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4183 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4184 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4185 typename T31,
typename T32,
typename T33,
typename T34>
4188 typedef Types33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4189 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4190 T30, T31, T32, T33, T34> Tail;
4193template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4194 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4195 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4196 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4197 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4198 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4199 typename T31,
typename T32,
typename T33,
typename T34,
typename T35>
4202 typedef Types34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4203 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4204 T30, T31, T32, T33, T34, T35> Tail;
4207template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4208 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4209 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4210 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4211 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4212 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4213 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
4217 typedef Types35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4218 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4219 T30, T31, T32, T33, T34, T35, T36> Tail;
4222template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4223 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4224 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4225 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4226 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4227 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4228 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
4229 typename T36,
typename T37>
4232 typedef Types36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4233 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4234 T30, T31, T32, T33, T34, T35, T36, T37> Tail;
4237template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4238 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4239 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4240 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4241 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4242 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4243 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
4244 typename T36,
typename T37,
typename T38>
4247 typedef Types37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4248 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4249 T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
4252template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4253 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4254 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4255 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4256 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4257 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4258 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
4259 typename T36,
typename T37,
typename T38,
typename T39>
4262 typedef Types38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4263 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4264 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
4267template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4268 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4269 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4270 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4271 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4272 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4273 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
4274 typename T36,
typename T37,
typename T38,
typename T39,
typename T40>
4277 typedef Types39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4278 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4279 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
4282template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4283 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4284 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4285 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4286 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4287 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4288 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
4289 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
4293 typedef Types40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4294 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4295 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
4298template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4299 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4300 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4301 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4302 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4303 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4304 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
4305 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
4306 typename T41,
typename T42>
4309 typedef Types41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4310 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4311 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> Tail;
4314template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4315 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4316 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4317 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4318 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4319 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4320 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
4321 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
4322 typename T41,
typename T42,
typename T43>
4325 typedef Types42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4326 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4327 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
4331template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4332 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4333 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4334 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4335 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4336 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4337 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
4338 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
4339 typename T41,
typename T42,
typename T43,
typename T44>
4342 typedef Types43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4343 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4344 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
4348template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4349 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4350 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4351 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4352 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4353 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4354 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
4355 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
4356 typename T41,
typename T42,
typename T43,
typename T44,
typename T45>
4359 typedef Types44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4360 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4361 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
4365template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4366 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4367 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4368 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4369 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4370 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4371 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
4372 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
4373 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
4377 typedef Types45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4378 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4379 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
4380 T44, T45, T46> Tail;
4383template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4384 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4385 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4386 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4387 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4388 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4389 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
4390 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
4391 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
4392 typename T46,
typename T47>
4395 typedef Types46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4396 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4397 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
4398 T44, T45, T46, T47> Tail;
4401template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4402 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4403 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4404 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4405 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4406 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4407 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
4408 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
4409 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
4410 typename T46,
typename T47,
typename T48>
4413 typedef Types47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4414 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4415 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
4416 T44, T45, T46, T47, T48> Tail;
4419template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4420 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4421 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4422 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4423 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4424 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4425 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
4426 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
4427 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
4428 typename T46,
typename T47,
typename T48,
typename T49>
4431 typedef Types48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4432 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4433 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
4434 T44, T45, T46, T47, T48, T49> Tail;
4437template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4438 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4439 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4440 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4441 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4442 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
4443 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
4444 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
4445 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
4446 typename T46,
typename T47,
typename T48,
typename T49,
typename T50>
4449 typedef Types49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4450 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4451 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
4452 T44, T45, T46, T47, T48, T49, T50> Tail;
4471template <
typename T1 = internal::None,
typename T2 = internal::None,
4472 typename T3 = internal::None,
typename T4 = internal::None,
4473 typename T5 = internal::None,
typename T6 = internal::None,
4474 typename T7 = internal::None,
typename T8 = internal::None,
4475 typename T9 = internal::None,
typename T10 = internal::None,
4476 typename T11 = internal::None,
typename T12 = internal::None,
4477 typename T13 = internal::None,
typename T14 = internal::None,
4478 typename T15 = internal::None,
typename T16 = internal::None,
4479 typename T17 = internal::None,
typename T18 = internal::None,
4480 typename T19 = internal::None,
typename T20 = internal::None,
4481 typename T21 = internal::None,
typename T22 = internal::None,
4482 typename T23 = internal::None,
typename T24 = internal::None,
4483 typename T25 = internal::None,
typename T26 = internal::None,
4484 typename T27 = internal::None,
typename T28 = internal::None,
4485 typename T29 = internal::None,
typename T30 = internal::None,
4486 typename T31 = internal::None,
typename T32 = internal::None,
4487 typename T33 = internal::None,
typename T34 = internal::None,
4488 typename T35 = internal::None,
typename T36 = internal::None,
4489 typename T37 = internal::None,
typename T38 = internal::None,
4490 typename T39 = internal::None,
typename T40 = internal::None,
4491 typename T41 = internal::None,
typename T42 = internal::None,
4492 typename T43 = internal::None,
typename T44 = internal::None,
4493 typename T45 = internal::None,
typename T46 = internal::None,
4494 typename T47 = internal::None,
typename T48 = internal::None,
4495 typename T49 = internal::None,
typename T50 = internal::None>
4497 typedef internal::Types50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4498 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4499 T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
4500 T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>
type;
4504struct Types<internal::None, internal::None, internal::None, internal::None,
4505 internal::None, internal::None, internal::None, internal::None,
4506 internal::None, internal::None, internal::None, internal::None,
4507 internal::None, internal::None, internal::None, internal::None,
4508 internal::None, internal::None, internal::None, internal::None,
4509 internal::None, internal::None, internal::None, internal::None,
4510 internal::None, internal::None, internal::None, internal::None,
4511 internal::None, internal::None, internal::None, internal::None,
4512 internal::None, internal::None, internal::None, internal::None,
4513 internal::None, internal::None, internal::None, internal::None,
4514 internal::None, internal::None, internal::None, internal::None,
4515 internal::None, internal::None, internal::None, internal::None,
4516 internal::None, internal::None> {
4517 typedef internal::Types0
type;
4519template <
typename T1>
4520struct Types<T1, internal::None, internal::None, internal::None,
4521 internal::None, internal::None, internal::None, internal::None,
4522 internal::None, internal::None, internal::None, internal::None,
4523 internal::None, internal::None, internal::None, internal::None,
4524 internal::None, internal::None, internal::None, internal::None,
4525 internal::None, internal::None, internal::None, internal::None,
4526 internal::None, internal::None, internal::None, internal::None,
4527 internal::None, internal::None, internal::None, internal::None,
4528 internal::None, internal::None, internal::None, internal::None,
4529 internal::None, internal::None, internal::None, internal::None,
4530 internal::None, internal::None, internal::None, internal::None,
4531 internal::None, internal::None, internal::None, internal::None,
4532 internal::None, internal::None> {
4533 typedef internal::Types1<T1>
type;
4535template <
typename T1,
typename T2>
4536struct Types<T1, T2, internal::None, internal::None, internal::None,
4537 internal::None, internal::None, internal::None, internal::None,
4538 internal::None, internal::None, internal::None, internal::None,
4539 internal::None, internal::None, internal::None, internal::None,
4540 internal::None, internal::None, internal::None, internal::None,
4541 internal::None, internal::None, internal::None, internal::None,
4542 internal::None, internal::None, internal::None, internal::None,
4543 internal::None, internal::None, internal::None, internal::None,
4544 internal::None, internal::None, internal::None, internal::None,
4545 internal::None, internal::None, internal::None, internal::None,
4546 internal::None, internal::None, internal::None, internal::None,
4547 internal::None, internal::None, internal::None, internal::None,
4549 typedef internal::Types2<T1, T2>
type;
4551template <
typename T1,
typename T2,
typename T3>
4552struct Types<T1, T2, T3, internal::None, internal::None, internal::None,
4553 internal::None, internal::None, internal::None, internal::None,
4554 internal::None, internal::None, internal::None, internal::None,
4555 internal::None, internal::None, internal::None, internal::None,
4556 internal::None, internal::None, internal::None, internal::None,
4557 internal::None, internal::None, internal::None, internal::None,
4558 internal::None, internal::None, internal::None, internal::None,
4559 internal::None, internal::None, internal::None, internal::None,
4560 internal::None, internal::None, internal::None, internal::None,
4561 internal::None, internal::None, internal::None, internal::None,
4562 internal::None, internal::None, internal::None, internal::None,
4563 internal::None, internal::None, internal::None, internal::None> {
4564 typedef internal::Types3<T1, T2, T3>
type;
4566template <
typename T1,
typename T2,
typename T3,
typename T4>
4567struct Types<T1, T2, T3, T4, internal::None, internal::None, internal::None,
4568 internal::None, internal::None, internal::None, internal::None,
4569 internal::None, internal::None, internal::None, internal::None,
4570 internal::None, internal::None, internal::None, internal::None,
4571 internal::None, internal::None, internal::None, internal::None,
4572 internal::None, internal::None, internal::None, internal::None,
4573 internal::None, internal::None, internal::None, internal::None,
4574 internal::None, internal::None, internal::None, internal::None,
4575 internal::None, internal::None, internal::None, internal::None,
4576 internal::None, internal::None, internal::None, internal::None,
4577 internal::None, internal::None, internal::None, internal::None,
4578 internal::None, internal::None, internal::None> {
4579 typedef internal::Types4<T1, T2, T3, T4>
type;
4581template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
4582struct Types<T1, T2, T3, T4, T5, internal::None, internal::None,
4583 internal::None, internal::None, internal::None, internal::None,
4584 internal::None, internal::None, internal::None, internal::None,
4585 internal::None, internal::None, internal::None, internal::None,
4586 internal::None, internal::None, internal::None, internal::None,
4587 internal::None, internal::None, internal::None, internal::None,
4588 internal::None, internal::None, internal::None, internal::None,
4589 internal::None, internal::None, internal::None, internal::None,
4590 internal::None, internal::None, internal::None, internal::None,
4591 internal::None, internal::None, internal::None, internal::None,
4592 internal::None, internal::None, internal::None, internal::None,
4593 internal::None, internal::None, internal::None> {
4594 typedef internal::Types5<T1, T2, T3, T4, T5>
type;
4596template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4598struct Types<T1, T2, T3, T4, T5, T6, internal::None, internal::None,
4599 internal::None, internal::None, internal::None, internal::None,
4600 internal::None, internal::None, internal::None, internal::None,
4601 internal::None, internal::None, internal::None, internal::None,
4602 internal::None, internal::None, internal::None, internal::None,
4603 internal::None, internal::None, internal::None, internal::None,
4604 internal::None, internal::None, internal::None, internal::None,
4605 internal::None, internal::None, internal::None, internal::None,
4606 internal::None, internal::None, internal::None, internal::None,
4607 internal::None, internal::None, internal::None, internal::None,
4608 internal::None, internal::None, internal::None, internal::None,
4609 internal::None, internal::None> {
4610 typedef internal::Types6<T1, T2, T3, T4, T5, T6>
type;
4612template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4613 typename T6,
typename T7>
4614struct Types<T1, T2, T3, T4, T5, T6, T7, internal::None, internal::None,
4615 internal::None, internal::None, internal::None, internal::None,
4616 internal::None, internal::None, internal::None, internal::None,
4617 internal::None, internal::None, internal::None, internal::None,
4618 internal::None, internal::None, internal::None, internal::None,
4619 internal::None, internal::None, internal::None, internal::None,
4620 internal::None, internal::None, internal::None, internal::None,
4621 internal::None, internal::None, internal::None, internal::None,
4622 internal::None, internal::None, internal::None, internal::None,
4623 internal::None, internal::None, internal::None, internal::None,
4624 internal::None, internal::None, internal::None, internal::None,
4626 typedef internal::Types7<T1, T2, T3, T4, T5, T6, T7>
type;
4628template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4629 typename T6,
typename T7,
typename T8>
4630struct Types<T1, T2, T3, T4, T5, T6, T7, T8, internal::None, internal::None,
4631 internal::None, internal::None, internal::None, internal::None,
4632 internal::None, internal::None, internal::None, internal::None,
4633 internal::None, internal::None, internal::None, internal::None,
4634 internal::None, internal::None, internal::None, internal::None,
4635 internal::None, internal::None, internal::None, internal::None,
4636 internal::None, internal::None, internal::None, internal::None,
4637 internal::None, internal::None, internal::None, internal::None,
4638 internal::None, internal::None, internal::None, internal::None,
4639 internal::None, internal::None, internal::None, internal::None,
4640 internal::None, internal::None, internal::None, internal::None> {
4641 typedef internal::Types8<T1, T2, T3, T4, T5, T6, T7, T8>
type;
4643template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4644 typename T6,
typename T7,
typename T8,
typename T9>
4645struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, internal::None,
4646 internal::None, internal::None, internal::None, internal::None,
4647 internal::None, internal::None, internal::None, internal::None,
4648 internal::None, internal::None, internal::None, internal::None,
4649 internal::None, internal::None, internal::None, internal::None,
4650 internal::None, internal::None, internal::None, internal::None,
4651 internal::None, internal::None, internal::None, internal::None,
4652 internal::None, internal::None, internal::None, internal::None,
4653 internal::None, internal::None, internal::None, internal::None,
4654 internal::None, internal::None, internal::None, internal::None,
4655 internal::None, internal::None, internal::None, internal::None> {
4656 typedef internal::Types9<T1, T2, T3, T4, T5, T6, T7, T8, T9>
type;
4658template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4659 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
4660struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, internal::None,
4661 internal::None, internal::None, internal::None, internal::None,
4662 internal::None, internal::None, internal::None, internal::None,
4663 internal::None, internal::None, internal::None, internal::None,
4664 internal::None, internal::None, internal::None, internal::None,
4665 internal::None, internal::None, internal::None, internal::None,
4666 internal::None, internal::None, internal::None, internal::None,
4667 internal::None, internal::None, internal::None, internal::None,
4668 internal::None, internal::None, internal::None, internal::None,
4669 internal::None, internal::None, internal::None, internal::None,
4670 internal::None, internal::None, internal::None> {
4671 typedef internal::Types10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
type;
4673template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4674 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4676struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, internal::None,
4677 internal::None, internal::None, internal::None, internal::None,
4678 internal::None, internal::None, internal::None, internal::None,
4679 internal::None, internal::None, internal::None, internal::None,
4680 internal::None, internal::None, internal::None, internal::None,
4681 internal::None, internal::None, internal::None, internal::None,
4682 internal::None, internal::None, internal::None, internal::None,
4683 internal::None, internal::None, internal::None, internal::None,
4684 internal::None, internal::None, internal::None, internal::None,
4685 internal::None, internal::None, internal::None, internal::None,
4686 internal::None, internal::None> {
4687 typedef internal::Types11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
type;
4689template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4690 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4691 typename T11,
typename T12>
4692struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, internal::None,
4693 internal::None, internal::None, internal::None, internal::None,
4694 internal::None, internal::None, internal::None, internal::None,
4695 internal::None, internal::None, internal::None, internal::None,
4696 internal::None, internal::None, internal::None, internal::None,
4697 internal::None, internal::None, internal::None, internal::None,
4698 internal::None, internal::None, internal::None, internal::None,
4699 internal::None, internal::None, internal::None, internal::None,
4700 internal::None, internal::None, internal::None, internal::None,
4701 internal::None, internal::None, internal::None, internal::None,
4703 typedef internal::Types12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
4706template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4707 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4708 typename T11,
typename T12,
typename T13>
4709struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
4710 internal::None, internal::None, internal::None, internal::None,
4711 internal::None, internal::None, internal::None, internal::None,
4712 internal::None, internal::None, internal::None, internal::None,
4713 internal::None, internal::None, internal::None, internal::None,
4714 internal::None, internal::None, internal::None, internal::None,
4715 internal::None, internal::None, internal::None, internal::None,
4716 internal::None, internal::None, internal::None, internal::None,
4717 internal::None, internal::None, internal::None, internal::None,
4718 internal::None, internal::None, internal::None, internal::None,
4720 typedef internal::Types13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4723template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4724 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4725 typename T11,
typename T12,
typename T13,
typename T14>
4726struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
4727 internal::None, internal::None, internal::None, internal::None,
4728 internal::None, internal::None, internal::None, internal::None,
4729 internal::None, internal::None, internal::None, internal::None,
4730 internal::None, internal::None, internal::None, internal::None,
4731 internal::None, internal::None, internal::None, internal::None,
4732 internal::None, internal::None, internal::None, internal::None,
4733 internal::None, internal::None, internal::None, internal::None,
4734 internal::None, internal::None, internal::None, internal::None,
4735 internal::None, internal::None, internal::None, internal::None> {
4736 typedef internal::Types14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4739template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4740 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4741 typename T11,
typename T12,
typename T13,
typename T14,
typename T15>
4742struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4743 internal::None, internal::None, internal::None, internal::None,
4744 internal::None, internal::None, internal::None, internal::None,
4745 internal::None, internal::None, internal::None, internal::None,
4746 internal::None, internal::None, internal::None, internal::None,
4747 internal::None, internal::None, internal::None, internal::None,
4748 internal::None, internal::None, internal::None, internal::None,
4749 internal::None, internal::None, internal::None, internal::None,
4750 internal::None, internal::None, internal::None, internal::None,
4751 internal::None, internal::None, internal::None> {
4752 typedef internal::Types15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4753 T13, T14, T15>
type;
4755template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4756 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4757 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4759struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4760 T16, internal::None, internal::None, internal::None, internal::None,
4761 internal::None, internal::None, internal::None, internal::None,
4762 internal::None, internal::None, internal::None, internal::None,
4763 internal::None, internal::None, internal::None, internal::None,
4764 internal::None, internal::None, internal::None, internal::None,
4765 internal::None, internal::None, internal::None, internal::None,
4766 internal::None, internal::None, internal::None, internal::None,
4767 internal::None, internal::None, internal::None, internal::None,
4768 internal::None, internal::None> {
4769 typedef internal::Types16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4770 T13, T14, T15, T16>
type;
4772template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4773 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4774 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4775 typename T16,
typename T17>
4776struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4777 T16, T17, internal::None, internal::None, internal::None, internal::None,
4778 internal::None, internal::None, internal::None, internal::None,
4779 internal::None, internal::None, internal::None, internal::None,
4780 internal::None, internal::None, internal::None, internal::None,
4781 internal::None, internal::None, internal::None, internal::None,
4782 internal::None, internal::None, internal::None, internal::None,
4783 internal::None, internal::None, internal::None, internal::None,
4784 internal::None, internal::None, internal::None, internal::None,
4786 typedef internal::Types17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4787 T13, T14, T15, T16, T17>
type;
4789template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4790 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4791 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4792 typename T16,
typename T17,
typename T18>
4793struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4794 T16, T17, T18, internal::None, internal::None, internal::None,
4795 internal::None, internal::None, internal::None, internal::None,
4796 internal::None, internal::None, internal::None, internal::None,
4797 internal::None, internal::None, internal::None, internal::None,
4798 internal::None, internal::None, internal::None, internal::None,
4799 internal::None, internal::None, internal::None, internal::None,
4800 internal::None, internal::None, internal::None, internal::None,
4801 internal::None, internal::None, internal::None, internal::None,
4803 typedef internal::Types18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4804 T13, T14, T15, T16, T17, T18>
type;
4806template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4807 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4808 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4809 typename T16,
typename T17,
typename T18,
typename T19>
4810struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4811 T16, T17, T18, T19, internal::None, internal::None, internal::None,
4812 internal::None, internal::None, internal::None, internal::None,
4813 internal::None, internal::None, internal::None, internal::None,
4814 internal::None, internal::None, internal::None, internal::None,
4815 internal::None, internal::None, internal::None, internal::None,
4816 internal::None, internal::None, internal::None, internal::None,
4817 internal::None, internal::None, internal::None, internal::None,
4818 internal::None, internal::None, internal::None, internal::None> {
4819 typedef internal::Types19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4820 T13, T14, T15, T16, T17, T18, T19>
type;
4822template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4823 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4824 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4825 typename T16,
typename T17,
typename T18,
typename T19,
typename T20>
4826struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4827 T16, T17, T18, T19, T20, internal::None, internal::None, internal::None,
4828 internal::None, internal::None, internal::None, internal::None,
4829 internal::None, internal::None, internal::None, internal::None,
4830 internal::None, internal::None, internal::None, internal::None,
4831 internal::None, internal::None, internal::None, internal::None,
4832 internal::None, internal::None, internal::None, internal::None,
4833 internal::None, internal::None, internal::None, internal::None,
4834 internal::None, internal::None, internal::None> {
4835 typedef internal::Types20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4836 T13, T14, T15, T16, T17, T18, T19, T20>
type;
4838template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4839 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4840 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4841 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4843struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4844 T16, T17, T18, T19, T20, T21, internal::None, internal::None,
4845 internal::None, internal::None, internal::None, internal::None,
4846 internal::None, internal::None, internal::None, internal::None,
4847 internal::None, internal::None, internal::None, internal::None,
4848 internal::None, internal::None, internal::None, internal::None,
4849 internal::None, internal::None, internal::None, internal::None,
4850 internal::None, internal::None, internal::None, internal::None,
4851 internal::None, internal::None, internal::None> {
4852 typedef internal::Types21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4853 T13, T14, T15, T16, T17, T18, T19, T20, T21>
type;
4855template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4856 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4857 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4858 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4859 typename T21,
typename T22>
4860struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4861 T16, T17, T18, T19, T20, T21, T22, internal::None, internal::None,
4862 internal::None, internal::None, internal::None, internal::None,
4863 internal::None, internal::None, internal::None, internal::None,
4864 internal::None, internal::None, internal::None, internal::None,
4865 internal::None, internal::None, internal::None, internal::None,
4866 internal::None, internal::None, internal::None, internal::None,
4867 internal::None, internal::None, internal::None, internal::None,
4868 internal::None, internal::None> {
4869 typedef internal::Types22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4870 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>
type;
4872template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4873 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4874 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4875 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4876 typename T21,
typename T22,
typename T23>
4877struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4878 T16, T17, T18, T19, T20, T21, T22, T23, internal::None, internal::None,
4879 internal::None, internal::None, internal::None, internal::None,
4880 internal::None, internal::None, internal::None, internal::None,
4881 internal::None, internal::None, internal::None, internal::None,
4882 internal::None, internal::None, internal::None, internal::None,
4883 internal::None, internal::None, internal::None, internal::None,
4884 internal::None, internal::None, internal::None, internal::None,
4886 typedef internal::Types23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4887 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>
type;
4889template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4890 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4891 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4892 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4893 typename T21,
typename T22,
typename T23,
typename T24>
4894struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4895 T16, T17, T18, T19, T20, T21, T22, T23, T24, internal::None,
4896 internal::None, internal::None, internal::None, internal::None,
4897 internal::None, internal::None, internal::None, internal::None,
4898 internal::None, internal::None, internal::None, internal::None,
4899 internal::None, internal::None, internal::None, internal::None,
4900 internal::None, internal::None, internal::None, internal::None,
4901 internal::None, internal::None, internal::None, internal::None,
4903 typedef internal::Types24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4904 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>
type;
4906template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4907 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4908 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4909 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4910 typename T21,
typename T22,
typename T23,
typename T24,
typename T25>
4911struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4912 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, internal::None,
4913 internal::None, internal::None, internal::None, internal::None,
4914 internal::None, internal::None, internal::None, internal::None,
4915 internal::None, internal::None, internal::None, internal::None,
4916 internal::None, internal::None, internal::None, internal::None,
4917 internal::None, internal::None, internal::None, internal::None,
4918 internal::None, internal::None, internal::None, internal::None> {
4919 typedef internal::Types25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4920 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>
type;
4922template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4923 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4924 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4925 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4926 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4928struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4929 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, internal::None,
4930 internal::None, internal::None, internal::None, internal::None,
4931 internal::None, internal::None, internal::None, internal::None,
4932 internal::None, internal::None, internal::None, internal::None,
4933 internal::None, internal::None, internal::None, internal::None,
4934 internal::None, internal::None, internal::None, internal::None,
4935 internal::None, internal::None, internal::None> {
4936 typedef internal::Types26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4937 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
4940template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4941 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4942 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4943 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4944 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4945 typename T26,
typename T27>
4946struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4947 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, internal::None,
4948 internal::None, internal::None, internal::None, internal::None,
4949 internal::None, internal::None, internal::None, internal::None,
4950 internal::None, internal::None, internal::None, internal::None,
4951 internal::None, internal::None, internal::None, internal::None,
4952 internal::None, internal::None, internal::None, internal::None,
4953 internal::None, internal::None> {
4954 typedef internal::Types27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4955 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4958template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4959 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4960 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4961 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4962 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4963 typename T26,
typename T27,
typename T28>
4964struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4965 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
4966 internal::None, internal::None, internal::None, internal::None,
4967 internal::None, internal::None, internal::None, internal::None,
4968 internal::None, internal::None, internal::None, internal::None,
4969 internal::None, internal::None, internal::None, internal::None,
4970 internal::None, internal::None, internal::None, internal::None,
4971 internal::None, internal::None> {
4972 typedef internal::Types28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4973 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4976template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4977 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4978 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4979 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4980 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4981 typename T26,
typename T27,
typename T28,
typename T29>
4982struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4983 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4984 internal::None, internal::None, internal::None, internal::None,
4985 internal::None, internal::None, internal::None, internal::None,
4986 internal::None, internal::None, internal::None, internal::None,
4987 internal::None, internal::None, internal::None, internal::None,
4988 internal::None, internal::None, internal::None, internal::None,
4990 typedef internal::Types29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4991 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4992 T27, T28, T29>
type;
4994template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
4995 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
4996 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
4997 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
4998 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
4999 typename T26,
typename T27,
typename T28,
typename T29,
typename T30>
5000struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5001 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5002 internal::None, internal::None, internal::None, internal::None,
5003 internal::None, internal::None, internal::None, internal::None,
5004 internal::None, internal::None, internal::None, internal::None,
5005 internal::None, internal::None, internal::None, internal::None,
5006 internal::None, internal::None, internal::None, internal::None> {
5007 typedef internal::Types30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5008 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5009 T27, T28, T29, T30>
type;
5011template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5012 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5013 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5014 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5015 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5016 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5018struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5019 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5020 T31, internal::None, internal::None, internal::None, internal::None,
5021 internal::None, internal::None, internal::None, internal::None,
5022 internal::None, internal::None, internal::None, internal::None,
5023 internal::None, internal::None, internal::None, internal::None,
5024 internal::None, internal::None, internal::None> {
5025 typedef internal::Types31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5026 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5027 T27, T28, T29, T30, T31>
type;
5029template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5030 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5031 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5032 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5033 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5034 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5035 typename T31,
typename T32>
5036struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5037 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5038 T31, T32, internal::None, internal::None, internal::None, internal::None,
5039 internal::None, internal::None, internal::None, internal::None,
5040 internal::None, internal::None, internal::None, internal::None,
5041 internal::None, internal::None, internal::None, internal::None,
5042 internal::None, internal::None> {
5043 typedef internal::Types32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5044 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5045 T27, T28, T29, T30, T31, T32>
type;
5047template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5048 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5049 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5050 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5051 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5052 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5053 typename T31,
typename T32,
typename T33>
5054struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5055 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5056 T31, T32, T33, internal::None, internal::None, internal::None,
5057 internal::None, internal::None, internal::None, internal::None,
5058 internal::None, internal::None, internal::None, internal::None,
5059 internal::None, internal::None, internal::None, internal::None,
5060 internal::None, internal::None> {
5061 typedef internal::Types33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5062 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5063 T27, T28, T29, T30, T31, T32, T33>
type;
5065template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5066 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5067 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5068 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5069 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5070 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5071 typename T31,
typename T32,
typename T33,
typename T34>
5072struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5073 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5074 T31, T32, T33, T34, internal::None, internal::None, internal::None,
5075 internal::None, internal::None, internal::None, internal::None,
5076 internal::None, internal::None, internal::None, internal::None,
5077 internal::None, internal::None, internal::None, internal::None,
5079 typedef internal::Types34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5080 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5081 T27, T28, T29, T30, T31, T32, T33, T34>
type;
5083template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5084 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5085 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5086 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5087 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5088 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5089 typename T31,
typename T32,
typename T33,
typename T34,
typename T35>
5090struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5091 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5092 T31, T32, T33, T34, T35, internal::None, internal::None, internal::None,
5093 internal::None, internal::None, internal::None, internal::None,
5094 internal::None, internal::None, internal::None, internal::None,
5095 internal::None, internal::None, internal::None, internal::None> {
5096 typedef internal::Types35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5097 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5098 T27, T28, T29, T30, T31, T32, T33, T34, T35>
type;
5100template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5101 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5102 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5103 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5104 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5105 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5106 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
5108struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5109 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5110 T31, T32, T33, T34, T35, T36, internal::None, internal::None,
5111 internal::None, internal::None, internal::None, internal::None,
5112 internal::None, internal::None, internal::None, internal::None,
5113 internal::None, internal::None, internal::None, internal::None> {
5114 typedef internal::Types36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5115 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5116 T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>
type;
5118template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5119 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5120 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5121 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5122 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5123 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5124 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
5125 typename T36,
typename T37>
5126struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5127 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5128 T31, T32, T33, T34, T35, T36, T37, internal::None, internal::None,
5129 internal::None, internal::None, internal::None, internal::None,
5130 internal::None, internal::None, internal::None, internal::None,
5131 internal::None, internal::None, internal::None> {
5132 typedef internal::Types37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5133 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5134 T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>
type;
5136template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5137 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5138 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5139 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5140 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5141 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5142 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
5143 typename T36,
typename T37,
typename T38>
5144struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5145 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5146 T31, T32, T33, T34, T35, T36, T37, T38, internal::None, internal::None,
5147 internal::None, internal::None, internal::None, internal::None,
5148 internal::None, internal::None, internal::None, internal::None,
5149 internal::None, internal::None> {
5150 typedef internal::Types38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5151 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5152 T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>
type;
5154template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5155 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5156 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5157 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5158 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5159 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5160 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
5161 typename T36,
typename T37,
typename T38,
typename T39>
5162struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5163 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5164 T31, T32, T33, T34, T35, T36, T37, T38, T39, internal::None,
5165 internal::None, internal::None, internal::None, internal::None,
5166 internal::None, internal::None, internal::None, internal::None,
5167 internal::None, internal::None> {
5168 typedef internal::Types39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5169 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5170 T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>
type;
5172template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5173 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5174 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5175 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5176 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5177 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5178 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
5179 typename T36,
typename T37,
typename T38,
typename T39,
typename T40>
5180struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5181 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5182 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, internal::None,
5183 internal::None, internal::None, internal::None, internal::None,
5184 internal::None, internal::None, internal::None, internal::None,
5186 typedef internal::Types40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5187 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5188 T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
5191template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5192 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5193 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5194 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5195 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5196 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5197 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
5198 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
5200struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5201 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5202 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, internal::None,
5203 internal::None, internal::None, internal::None, internal::None,
5204 internal::None, internal::None, internal::None, internal::None> {
5205 typedef internal::Types41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5206 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5207 T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
5210template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5211 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5212 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5213 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5214 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5215 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5216 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
5217 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
5218 typename T41,
typename T42>
5219struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5220 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5221 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, internal::None,
5222 internal::None, internal::None, internal::None, internal::None,
5223 internal::None, internal::None, internal::None> {
5224 typedef internal::Types42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5225 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5226 T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
5229template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5230 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5231 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5232 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5233 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5234 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5235 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
5236 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
5237 typename T41,
typename T42,
typename T43>
5238struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5239 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5240 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
5241 internal::None, internal::None, internal::None, internal::None,
5242 internal::None, internal::None, internal::None> {
5243 typedef internal::Types43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5244 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5245 T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
5246 T41, T42, T43>
type;
5248template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5249 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5250 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5251 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5252 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5253 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5254 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
5255 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
5256 typename T41,
typename T42,
typename T43,
typename T44>
5257struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5258 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5259 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
5260 internal::None, internal::None, internal::None, internal::None,
5261 internal::None, internal::None> {
5262 typedef internal::Types44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5263 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5264 T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
5265 T41, T42, T43, T44>
type;
5267template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5268 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5269 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5270 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5271 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5272 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5273 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
5274 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
5275 typename T41,
typename T42,
typename T43,
typename T44,
typename T45>
5276struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5277 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5278 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
5279 internal::None, internal::None, internal::None, internal::None,
5281 typedef internal::Types45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5282 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5283 T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
5284 T41, T42, T43, T44, T45>
type;
5286template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5287 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5288 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5289 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5290 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5291 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5292 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
5293 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
5294 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
5296struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5297 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5298 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
5299 T46, internal::None, internal::None, internal::None, internal::None> {
5300 typedef internal::Types46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5301 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5302 T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
5303 T41, T42, T43, T44, T45, T46>
type;
5305template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5306 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5307 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5308 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5309 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5310 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5311 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
5312 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
5313 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
5314 typename T46,
typename T47>
5315struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5316 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5317 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
5318 T46, T47, internal::None, internal::None, internal::None> {
5319 typedef internal::Types47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5320 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5321 T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
5322 T41, T42, T43, T44, T45, T46, T47>
type;
5324template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5325 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5326 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5327 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5328 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5329 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5330 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
5331 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
5332 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
5333 typename T46,
typename T47,
typename T48>
5334struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5335 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5336 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
5337 T46, T47, T48, internal::None, internal::None> {
5338 typedef internal::Types48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5339 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5340 T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
5341 T41, T42, T43, T44, T45, T46, T47, T48>
type;
5343template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
5344 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
5345 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
5346 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
5347 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
5348 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
5349 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
5350 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
5351 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
5352 typename T46,
typename T47,
typename T48,
typename T49>
5353struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
5354 T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
5355 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
5356 T46, T47, T48, T49, internal::None> {
5357 typedef internal::Types49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5358 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5359 T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
5360 T41, T42, T43, T44, T45, T46, T47, T48, T49>
type;
5365# define GTEST_TEMPLATE_ template <typename T> class
5375template <GTEST_TEMPLATE_ Tmpl>
5377 template <
typename T>
5379 typedef Tmpl<T>
type;
5383# define GTEST_BIND_(TmplSel, T) \
5384 TmplSel::template Bind<T>::type
5390template <
typename T>
5401struct Templates0 {};
5405template <GTEST_TEMPLATE_ T1>
5407 typedef TemplateSel<T1> Head;
5408 typedef Templates0 Tail;
5410template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
5412 typedef TemplateSel<T1> Head;
5413 typedef Templates1<T2> Tail;
5416template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
5418 typedef TemplateSel<T1> Head;
5419 typedef Templates2<T2, T3> Tail;
5422template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5425 typedef TemplateSel<T1> Head;
5426 typedef Templates3<T2, T3, T4> Tail;
5429template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5430 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
5432 typedef TemplateSel<T1> Head;
5433 typedef Templates4<T2, T3, T4, T5> Tail;
5436template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5437 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
5439 typedef TemplateSel<T1> Head;
5440 typedef Templates5<T2, T3, T4, T5, T6> Tail;
5443template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5444 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5447 typedef TemplateSel<T1> Head;
5448 typedef Templates6<T2, T3, T4, T5, T6, T7> Tail;
5451template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5452 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5453 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
5455 typedef TemplateSel<T1> Head;
5456 typedef Templates7<T2, T3, T4, T5, T6, T7, T8> Tail;
5459template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5460 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5461 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
5463 typedef TemplateSel<T1> Head;
5464 typedef Templates8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
5467template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5468 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5469 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5470 GTEST_TEMPLATE_ T10>
5472 typedef TemplateSel<T1> Head;
5473 typedef Templates9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
5476template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5477 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5478 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5479 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
5481 typedef TemplateSel<T1> Head;
5482 typedef Templates10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
5485template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5486 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5487 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5488 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
5490 typedef TemplateSel<T1> Head;
5491 typedef Templates11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
5494template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5495 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5496 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5497 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5498 GTEST_TEMPLATE_ T13>
5500 typedef TemplateSel<T1> Head;
5501 typedef Templates12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
5504template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5505 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5506 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5507 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5508 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
5510 typedef TemplateSel<T1> Head;
5511 typedef Templates13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
5515template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5516 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5517 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5518 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5519 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
5521 typedef TemplateSel<T1> Head;
5522 typedef Templates14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5526template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5527 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5528 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5529 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5530 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5531 GTEST_TEMPLATE_ T16>
5533 typedef TemplateSel<T1> Head;
5534 typedef Templates15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5538template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5539 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5540 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5541 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5542 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5543 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
5545 typedef TemplateSel<T1> Head;
5546 typedef Templates16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5547 T15, T16, T17> Tail;
5550template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5551 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5552 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5553 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5554 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5555 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
5557 typedef TemplateSel<T1> Head;
5558 typedef Templates17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5559 T15, T16, T17, T18> Tail;
5562template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5563 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5564 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5565 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5566 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5567 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5568 GTEST_TEMPLATE_ T19>
5570 typedef TemplateSel<T1> Head;
5571 typedef Templates18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5572 T15, T16, T17, T18, T19> Tail;
5575template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5576 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5577 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5578 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5579 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5580 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5581 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
5583 typedef TemplateSel<T1> Head;
5584 typedef Templates19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5585 T15, T16, T17, T18, T19, T20> Tail;
5588template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5589 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5590 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5591 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5592 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5593 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5594 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
5596 typedef TemplateSel<T1> Head;
5597 typedef Templates20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5598 T15, T16, T17, T18, T19, T20, T21> Tail;
5601template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5602 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5603 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5604 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5605 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5606 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5607 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5608 GTEST_TEMPLATE_ T22>
5610 typedef TemplateSel<T1> Head;
5611 typedef Templates21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5612 T15, T16, T17, T18, T19, T20, T21, T22> Tail;
5615template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5616 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5617 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5618 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5619 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5620 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5621 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5622 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
5624 typedef TemplateSel<T1> Head;
5625 typedef Templates22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5626 T15, T16, T17, T18, T19, T20, T21, T22, T23> Tail;
5629template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5630 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5631 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5632 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5633 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5634 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5635 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5636 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
5638 typedef TemplateSel<T1> Head;
5639 typedef Templates23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5640 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
5643template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5644 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5645 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5646 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5647 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5648 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5649 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5650 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5651 GTEST_TEMPLATE_ T25>
5653 typedef TemplateSel<T1> Head;
5654 typedef Templates24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5655 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
5658template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5659 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5660 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5661 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5662 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5663 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5664 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5665 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5666 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
5668 typedef TemplateSel<T1> Head;
5669 typedef Templates25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5670 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
5673template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5674 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5675 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5676 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5677 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5678 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5679 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5680 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5681 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
5683 typedef TemplateSel<T1> Head;
5684 typedef Templates26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5685 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
5688template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5689 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5690 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5691 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5692 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5693 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5694 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5695 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5696 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5697 GTEST_TEMPLATE_ T28>
5699 typedef TemplateSel<T1> Head;
5700 typedef Templates27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5701 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
5705template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5706 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5707 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5708 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5709 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5710 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5711 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5712 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5713 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5714 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
5716 typedef TemplateSel<T1> Head;
5717 typedef Templates28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5718 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5722template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5723 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5724 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5725 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5726 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5727 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5728 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5729 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5730 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5731 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
5733 typedef TemplateSel<T1> Head;
5734 typedef Templates29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5735 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5739template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5740 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5741 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5742 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5743 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5744 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5745 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5746 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5747 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5748 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5749 GTEST_TEMPLATE_ T31>
5751 typedef TemplateSel<T1> Head;
5752 typedef Templates30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5753 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5754 T29, T30, T31> Tail;
5757template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5758 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5759 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5760 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5761 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5762 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5763 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5764 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5765 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5766 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5767 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
5769 typedef TemplateSel<T1> Head;
5770 typedef Templates31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5771 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5772 T29, T30, T31, T32> Tail;
5775template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5776 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5777 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5778 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5779 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5780 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5781 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5782 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5783 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5784 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5785 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
5787 typedef TemplateSel<T1> Head;
5788 typedef Templates32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5789 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5790 T29, T30, T31, T32, T33> Tail;
5793template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5794 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5795 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5796 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5797 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5798 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5799 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5800 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5801 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5802 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5803 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5804 GTEST_TEMPLATE_ T34>
5806 typedef TemplateSel<T1> Head;
5807 typedef Templates33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5808 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5809 T29, T30, T31, T32, T33, T34> Tail;
5812template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5813 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5814 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5815 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5816 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5817 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5818 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5819 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5820 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5821 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5822 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5823 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
5825 typedef TemplateSel<T1> Head;
5826 typedef Templates34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5827 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5828 T29, T30, T31, T32, T33, T34, T35> Tail;
5831template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5832 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5833 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5834 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5835 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5836 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5837 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5838 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5839 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5840 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5841 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5842 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
5844 typedef TemplateSel<T1> Head;
5845 typedef Templates35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5846 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5847 T29, T30, T31, T32, T33, T34, T35, T36> Tail;
5850template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5851 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5852 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5853 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5854 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5855 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5856 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5857 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5858 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5859 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5860 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5861 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5862 GTEST_TEMPLATE_ T37>
5864 typedef TemplateSel<T1> Head;
5865 typedef Templates36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5866 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5867 T29, T30, T31, T32, T33, T34, T35, T36, T37> Tail;
5870template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5871 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5872 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5873 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5874 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5875 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5876 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5877 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5878 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5879 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5880 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5881 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5882 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
5884 typedef TemplateSel<T1> Head;
5885 typedef Templates37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5886 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5887 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
5890template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5891 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5892 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5893 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5894 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5895 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5896 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5897 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5898 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5899 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5900 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5901 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5902 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
5904 typedef TemplateSel<T1> Head;
5905 typedef Templates38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5906 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5907 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
5910template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5911 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5912 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5913 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5914 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5915 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5916 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5917 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5918 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5919 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5920 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5921 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5922 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
5923 GTEST_TEMPLATE_ T40>
5925 typedef TemplateSel<T1> Head;
5926 typedef Templates39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5927 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5928 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
5931template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5932 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5933 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5934 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5935 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5936 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5937 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5938 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5939 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5940 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5941 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5942 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5943 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
5944 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
5946 typedef TemplateSel<T1> Head;
5947 typedef Templates40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5948 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5949 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
5952template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5953 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5954 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5955 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5956 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5957 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5958 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5959 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5960 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5961 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5962 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5963 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5964 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
5965 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
5967 typedef TemplateSel<T1> Head;
5968 typedef Templates41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5969 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5970 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
5974template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5975 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5976 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5977 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5978 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5979 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5980 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5981 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5982 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5983 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5984 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5985 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5986 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
5987 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
5988 GTEST_TEMPLATE_ T43>
5990 typedef TemplateSel<T1> Head;
5991 typedef Templates42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5992 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5993 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
5997template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5998 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5999 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6000 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6001 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6002 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6003 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6004 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6005 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6006 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6007 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6008 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6009 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6010 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6011 GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
6013 typedef TemplateSel<T1> Head;
6014 typedef Templates43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6015 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
6016 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
6020template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6021 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6022 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6023 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6024 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6025 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6026 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6027 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6028 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6029 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6030 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6031 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6032 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6033 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6034 GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
6036 typedef TemplateSel<T1> Head;
6037 typedef Templates44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6038 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
6039 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
6040 T43, T44, T45> Tail;
6043template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6044 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6045 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6046 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6047 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6048 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6049 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6050 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6051 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6052 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6053 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6054 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6055 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6056 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6057 GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
6058 GTEST_TEMPLATE_ T46>
6060 typedef TemplateSel<T1> Head;
6061 typedef Templates45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6062 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
6063 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
6064 T43, T44, T45, T46> Tail;
6067template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6068 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6069 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6070 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6071 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6072 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6073 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6074 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6075 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6076 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6077 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6078 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6079 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6080 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6081 GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
6082 GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
6084 typedef TemplateSel<T1> Head;
6085 typedef Templates46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6086 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
6087 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
6088 T43, T44, T45, T46, T47> Tail;
6091template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6092 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6093 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6094 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6095 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6096 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6097 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6098 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6099 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6100 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6101 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6102 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6103 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6104 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6105 GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
6106 GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
6108 typedef TemplateSel<T1> Head;
6109 typedef Templates47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6110 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
6111 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
6112 T43, T44, T45, T46, T47, T48> Tail;
6115template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6116 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6117 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6118 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6119 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6120 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6121 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6122 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6123 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6124 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6125 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6126 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6127 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6128 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6129 GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
6130 GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
6131 GTEST_TEMPLATE_ T49>
6133 typedef TemplateSel<T1> Head;
6134 typedef Templates48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6135 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
6136 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
6137 T43, T44, T45, T46, T47, T48, T49> Tail;
6140template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6141 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6142 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6143 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6144 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6145 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6146 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6147 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6148 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6149 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6150 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6151 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6152 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6153 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6154 GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
6155 GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
6156 GTEST_TEMPLATE_ T49, GTEST_TEMPLATE_ T50>
6158 typedef TemplateSel<T1> Head;
6159 typedef Templates49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6160 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
6161 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
6162 T43, T44, T45, T46, T47, T48, T49, T50> Tail;
6179template <GTEST_TEMPLATE_ T1 = NoneT, GTEST_TEMPLATE_ T2 = NoneT,
6180 GTEST_TEMPLATE_ T3 = NoneT, GTEST_TEMPLATE_ T4 = NoneT,
6181 GTEST_TEMPLATE_ T5 = NoneT, GTEST_TEMPLATE_ T6 = NoneT,
6182 GTEST_TEMPLATE_ T7 = NoneT, GTEST_TEMPLATE_ T8 = NoneT,
6183 GTEST_TEMPLATE_ T9 = NoneT, GTEST_TEMPLATE_ T10 = NoneT,
6184 GTEST_TEMPLATE_ T11 = NoneT, GTEST_TEMPLATE_ T12 = NoneT,
6185 GTEST_TEMPLATE_ T13 = NoneT, GTEST_TEMPLATE_ T14 = NoneT,
6186 GTEST_TEMPLATE_ T15 = NoneT, GTEST_TEMPLATE_ T16 = NoneT,
6187 GTEST_TEMPLATE_ T17 = NoneT, GTEST_TEMPLATE_ T18 = NoneT,
6188 GTEST_TEMPLATE_ T19 = NoneT, GTEST_TEMPLATE_ T20 = NoneT,
6189 GTEST_TEMPLATE_ T21 = NoneT, GTEST_TEMPLATE_ T22 = NoneT,
6190 GTEST_TEMPLATE_ T23 = NoneT, GTEST_TEMPLATE_ T24 = NoneT,
6191 GTEST_TEMPLATE_ T25 = NoneT, GTEST_TEMPLATE_ T26 = NoneT,
6192 GTEST_TEMPLATE_ T27 = NoneT, GTEST_TEMPLATE_ T28 = NoneT,
6193 GTEST_TEMPLATE_ T29 = NoneT, GTEST_TEMPLATE_ T30 = NoneT,
6194 GTEST_TEMPLATE_ T31 = NoneT, GTEST_TEMPLATE_ T32 = NoneT,
6195 GTEST_TEMPLATE_ T33 = NoneT, GTEST_TEMPLATE_ T34 = NoneT,
6196 GTEST_TEMPLATE_ T35 = NoneT, GTEST_TEMPLATE_ T36 = NoneT,
6197 GTEST_TEMPLATE_ T37 = NoneT, GTEST_TEMPLATE_ T38 = NoneT,
6198 GTEST_TEMPLATE_ T39 = NoneT, GTEST_TEMPLATE_ T40 = NoneT,
6199 GTEST_TEMPLATE_ T41 = NoneT, GTEST_TEMPLATE_ T42 = NoneT,
6200 GTEST_TEMPLATE_ T43 = NoneT, GTEST_TEMPLATE_ T44 = NoneT,
6201 GTEST_TEMPLATE_ T45 = NoneT, GTEST_TEMPLATE_ T46 = NoneT,
6202 GTEST_TEMPLATE_ T47 = NoneT, GTEST_TEMPLATE_ T48 = NoneT,
6203 GTEST_TEMPLATE_ T49 = NoneT, GTEST_TEMPLATE_ T50 = NoneT>
6205 typedef Templates50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6206 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6207 T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
6208 T42, T43, T44, T45, T46, T47, T48, T49, T50>
type;
6212struct Templates<NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6213 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6214 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6215 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6216 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6218 typedef Templates0
type;
6220template <GTEST_TEMPLATE_ T1>
6221struct Templates<T1, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6222 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6223 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6224 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6225 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6227 typedef Templates1<T1>
type;
6229template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
6230struct Templates<T1, T2, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6231 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6232 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6233 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6234 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6236 typedef Templates2<T1, T2>
type;
6238template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
6239struct Templates<T1, T2, T3, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6240 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6241 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6242 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6243 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6244 typedef Templates3<T1, T2, T3>
type;
6246template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6248struct Templates<T1, T2, T3, T4, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6249 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6250 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6251 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6252 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6253 typedef Templates4<T1, T2, T3, T4>
type;
6255template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6256 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
6257struct Templates<T1, T2, T3, T4, T5, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6258 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6259 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6260 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6261 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6262 typedef Templates5<T1, T2, T3, T4, T5>
type;
6264template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6265 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
6266struct Templates<T1, T2, T3, T4, T5, T6, NoneT, NoneT, NoneT, NoneT, NoneT,
6267 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6268 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6269 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6270 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6271 typedef Templates6<T1, T2, T3, T4, T5, T6>
type;
6273template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6274 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6276struct Templates<T1, T2, T3, T4, T5, T6, T7, NoneT, NoneT, NoneT, NoneT, NoneT,
6277 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6278 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6279 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6280 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6281 typedef Templates7<T1, T2, T3, T4, T5, T6, T7>
type;
6283template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6284 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6285 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
6286struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, NoneT, NoneT, NoneT, NoneT,
6287 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6288 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6289 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6290 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6291 typedef Templates8<T1, T2, T3, T4, T5, T6, T7, T8>
type;
6293template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6294 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6295 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
6296struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, NoneT, NoneT, NoneT,
6297 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6298 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6299 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6300 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6301 typedef Templates9<T1, T2, T3, T4, T5, T6, T7, T8, T9>
type;
6303template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6304 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6305 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6306 GTEST_TEMPLATE_ T10>
6307struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, NoneT, NoneT, NoneT,
6308 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6309 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6310 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6311 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6312 typedef Templates10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
type;
6314template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6315 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6316 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6317 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
6318struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, NoneT, NoneT,
6319 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6320 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6321 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6322 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6323 typedef Templates11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
type;
6325template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6326 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6327 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6328 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
6329struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, NoneT,
6330 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6331 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6332 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6333 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6334 typedef Templates12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>
type;
6336template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6337 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6338 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6339 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6340 GTEST_TEMPLATE_ T13>
6341struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, NoneT,
6342 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6343 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6344 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6345 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6346 typedef Templates13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
6349template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6350 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6351 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6352 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6353 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
6354struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6355 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6356 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6357 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6358 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6359 typedef Templates14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6362template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6363 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6364 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6365 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6366 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
6367struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6368 T15, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6369 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6370 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6371 NoneT, NoneT, NoneT, NoneT, NoneT> {
6372 typedef Templates15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6375template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6376 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6377 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6378 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6379 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6380 GTEST_TEMPLATE_ T16>
6381struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6382 T15, T16, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6383 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6384 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6385 NoneT, NoneT, NoneT, NoneT, NoneT> {
6386 typedef Templates16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6387 T14, T15, T16>
type;
6389template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6390 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6391 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6392 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6393 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6394 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
6395struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6396 T15, T16, T17, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6397 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6398 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6399 NoneT, NoneT, NoneT, NoneT, NoneT> {
6400 typedef Templates17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6401 T14, T15, T16, T17>
type;
6403template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6404 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6405 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6406 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6407 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6408 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
6409struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6410 T15, T16, T17, T18, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6411 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6412 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6413 NoneT, NoneT, NoneT, NoneT> {
6414 typedef Templates18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6415 T14, T15, T16, T17, T18>
type;
6417template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6418 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6419 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6420 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6421 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6422 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6423 GTEST_TEMPLATE_ T19>
6424struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6425 T15, T16, T17, T18, T19, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6426 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6427 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6428 NoneT, NoneT, NoneT, NoneT> {
6429 typedef Templates19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6430 T14, T15, T16, T17, T18, T19>
type;
6432template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6433 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6434 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6435 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6436 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6437 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6438 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
6439struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6440 T15, T16, T17, T18, T19, T20, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6441 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6442 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6443 NoneT, NoneT, NoneT, NoneT> {
6444 typedef Templates20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6445 T14, T15, T16, T17, T18, T19, T20>
type;
6447template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6448 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6449 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6450 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6451 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6452 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6453 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
6454struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6455 T15, T16, T17, T18, T19, T20, T21, NoneT, NoneT, NoneT, NoneT, NoneT,
6456 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6457 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6458 NoneT, NoneT, NoneT, NoneT> {
6459 typedef Templates21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6460 T14, T15, T16, T17, T18, T19, T20, T21>
type;
6462template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6463 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6464 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6465 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6466 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6467 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6468 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6469 GTEST_TEMPLATE_ T22>
6470struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6471 T15, T16, T17, T18, T19, T20, T21, T22, NoneT, NoneT, NoneT, NoneT, NoneT,
6472 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6473 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6474 NoneT, NoneT, NoneT> {
6475 typedef Templates22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6476 T14, T15, T16, T17, T18, T19, T20, T21, T22>
type;
6478template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6479 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6480 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6481 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6482 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6483 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6484 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6485 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
6486struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6487 T15, T16, T17, T18, T19, T20, T21, T22, T23, NoneT, NoneT, NoneT, NoneT,
6488 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6489 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6490 NoneT, NoneT, NoneT> {
6491 typedef Templates23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6492 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>
type;
6494template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6495 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6496 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6497 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6498 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6499 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6500 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6501 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
6502struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6503 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, NoneT, NoneT, NoneT,
6504 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6505 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6506 NoneT, NoneT, NoneT> {
6507 typedef Templates24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6508 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>
type;
6510template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6511 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6512 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6513 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6514 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6515 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6516 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6517 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6518 GTEST_TEMPLATE_ T25>
6519struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6520 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, NoneT, NoneT, NoneT,
6521 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6522 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6524 typedef Templates25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6525 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>
type;
6527template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6528 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6529 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6530 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6531 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6532 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6533 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6534 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6535 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
6536struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6537 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, NoneT, NoneT,
6538 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6539 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6541 typedef Templates26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6542 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26>
type;
6544template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6545 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6546 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6547 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6548 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6549 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6550 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6551 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6552 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
6553struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6554 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, NoneT,
6555 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6556 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6558 typedef Templates27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6559 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
6562template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6563 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6564 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6565 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6566 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6567 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6568 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6569 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6570 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6571 GTEST_TEMPLATE_ T28>
6572struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6573 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
6574 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6575 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6577 typedef Templates28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6578 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6581template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6582 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6583 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6584 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6585 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6586 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6587 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6588 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6589 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6590 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
6591struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6592 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6593 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6594 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6596 typedef Templates29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6597 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6600template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6601 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6602 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6603 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6604 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6605 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6606 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6607 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6608 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6609 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
6610struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6611 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6612 T30, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6613 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6614 typedef Templates30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6615 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6616 T28, T29, T30>
type;
6618template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6619 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6620 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6621 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6622 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6623 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6624 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6625 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6626 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6627 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6628 GTEST_TEMPLATE_ T31>
6629struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6630 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6631 T30, T31, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6632 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6633 typedef Templates31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6634 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6635 T28, T29, T30, T31>
type;
6637template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6638 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6639 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6640 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6641 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6642 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6643 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6644 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6645 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6646 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6647 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
6648struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6649 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6650 T30, T31, T32, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6651 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6652 typedef Templates32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6653 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6654 T28, T29, T30, T31, T32>
type;
6656template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6657 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6658 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6659 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6660 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6661 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6662 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6663 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6664 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6665 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6666 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
6667struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6668 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6669 T30, T31, T32, T33, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6670 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6671 typedef Templates33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6672 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6673 T28, T29, T30, T31, T32, T33>
type;
6675template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6676 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6677 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6678 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6679 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6680 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6681 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6682 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6683 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6684 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6685 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6686 GTEST_TEMPLATE_ T34>
6687struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6688 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6689 T30, T31, T32, T33, T34, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6690 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6691 typedef Templates34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6692 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6693 T28, T29, T30, T31, T32, T33, T34>
type;
6695template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6696 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6697 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6698 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6699 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6700 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6701 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6702 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6703 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6704 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6705 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6706 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
6707struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6708 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6709 T30, T31, T32, T33, T34, T35, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6710 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6711 typedef Templates35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6712 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6713 T28, T29, T30, T31, T32, T33, T34, T35>
type;
6715template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6716 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6717 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6718 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6719 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6720 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6721 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6722 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6723 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6724 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6725 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6726 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
6727struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6728 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6729 T30, T31, T32, T33, T34, T35, T36, NoneT, NoneT, NoneT, NoneT, NoneT,
6730 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6731 typedef Templates36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6732 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6733 T28, T29, T30, T31, T32, T33, T34, T35, T36>
type;
6735template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6736 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6737 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6738 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6739 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6740 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6741 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6742 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6743 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6744 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6745 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6746 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6747 GTEST_TEMPLATE_ T37>
6748struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6749 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6750 T30, T31, T32, T33, T34, T35, T36, T37, NoneT, NoneT, NoneT, NoneT, NoneT,
6751 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6752 typedef Templates37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6753 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6754 T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>
type;
6756template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6757 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6758 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6759 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6760 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6761 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6762 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6763 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6764 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6765 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6766 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6767 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6768 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
6769struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6770 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6771 T30, T31, T32, T33, T34, T35, T36, T37, T38, NoneT, NoneT, NoneT, NoneT,
6772 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6773 typedef Templates38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6774 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6775 T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>
type;
6777template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6778 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6779 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6780 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6781 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6782 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6783 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6784 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6785 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6786 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6787 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6788 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6789 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
6790struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6791 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6792 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, NoneT, NoneT, NoneT,
6793 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6794 typedef Templates39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6795 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6796 T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>
type;
6798template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6799 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6800 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6801 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6802 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6803 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6804 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6805 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6806 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6807 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6808 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6809 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6810 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6811 GTEST_TEMPLATE_ T40>
6812struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6813 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6814 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, NoneT, NoneT, NoneT,
6815 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6816 typedef Templates40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6817 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6818 T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40>
type;
6820template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6821 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6822 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6823 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6824 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6825 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6826 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6827 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6828 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6829 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6830 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6831 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6832 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6833 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
6834struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6835 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6836 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, NoneT, NoneT,
6837 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6838 typedef Templates41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6839 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6840 T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
6843template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6844 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6845 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6846 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6847 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6848 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6849 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6850 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6851 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6852 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6853 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6854 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6855 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6856 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
6857struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6858 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6859 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, NoneT,
6860 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6861 typedef Templates42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6862 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6863 T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
6866template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6867 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6868 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6869 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6870 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6871 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6872 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6873 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6874 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6875 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6876 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6877 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6878 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6879 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6880 GTEST_TEMPLATE_ T43>
6881struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6882 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6883 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
6884 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6885 typedef Templates43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6886 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6887 T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
6890template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6891 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6892 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6893 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6894 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6895 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6896 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6897 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6898 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6899 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6900 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6901 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6902 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6903 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6904 GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
6905struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6906 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6907 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
6908 NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6909 typedef Templates44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6910 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6911 T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
6912 T42, T43, T44>
type;
6914template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6915 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6916 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6917 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6918 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6919 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6920 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6921 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6922 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6923 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6924 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6925 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6926 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6927 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6928 GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
6929struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6930 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6931 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
6932 T45, NoneT, NoneT, NoneT, NoneT, NoneT> {
6933 typedef Templates45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6934 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6935 T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
6936 T42, T43, T44, T45>
type;
6938template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6939 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6940 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6941 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6942 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6943 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6944 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6945 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6946 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6947 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6948 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6949 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6950 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6951 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6952 GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
6953 GTEST_TEMPLATE_ T46>
6954struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6955 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6956 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
6957 T45, T46, NoneT, NoneT, NoneT, NoneT> {
6958 typedef Templates46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6959 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6960 T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
6961 T42, T43, T44, T45, T46>
type;
6963template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6964 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6965 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6966 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6967 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6968 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6969 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6970 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6971 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6972 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6973 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6974 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6975 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6976 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6977 GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
6978 GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
6979struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6980 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6981 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
6982 T45, T46, T47, NoneT, NoneT, NoneT> {
6983 typedef Templates47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6984 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6985 T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
6986 T42, T43, T44, T45, T46, T47>
type;
6988template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6989 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6990 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6991 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6992 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6993 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6994 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6995 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6996 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6997 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6998 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6999 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
7000 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
7001 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
7002 GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
7003 GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
7004struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
7005 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
7006 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
7007 T45, T46, T47, T48, NoneT, NoneT> {
7008 typedef Templates48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
7009 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
7010 T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
7011 T42, T43, T44, T45, T46, T47, T48>
type;
7013template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
7014 GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
7015 GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
7016 GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
7017 GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
7018 GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
7019 GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
7020 GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
7021 GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
7022 GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
7023 GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
7024 GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
7025 GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
7026 GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
7027 GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
7028 GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
7029 GTEST_TEMPLATE_ T49>
7030struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
7031 T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
7032 T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
7033 T45, T46, T47, T48, T49, NoneT> {
7034 typedef Templates49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
7035 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
7036 T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
7037 T42, T43, T44, T45, T46, T47, T48, T49>
type;
7044template <
typename T>
7046 typedef Types1<T>
type;
7049template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
7050 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
7051 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
7052 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
7053 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
7054 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
7055 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
7056 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
7057 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
7058 typename T46,
typename T47,
typename T48,
typename T49,
typename T50>
7059struct TypeList<Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
7060 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
7061 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
7062 T44, T45, T46, T47, T48, T49, T50> > {
7063 typedef typename Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
7064 T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
7065 T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
7066 T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>
::type type;
7084#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar)
7085#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar
7087class ProtocolMessage;
7094class AssertionResult;
7098class TestPartResult;
7101template <
typename T>
7138#ifdef GTEST_ELLIPSIS_NEEDS_POD_
7141# define GTEST_IS_NULL_LITERAL_(x) false
7143# define GTEST_IS_NULL_LITERAL_(x) \
7144 (sizeof(::testing::internal::IsNullLiteralHelper(x)) == 1)
7151#if GTEST_HAS_EXCEPTIONS
7161# pragma warning(push)
7162# pragma warning(disable:4275)
7165class GTEST_API_ GoogleTestFailureException :
public ::std::runtime_error {
7167 explicit GoogleTestFailureException(
const TestPartResult& failure);
7171# pragma warning(pop)
7211 const char* actual_expression,
7214 bool ignoring_case);
7219 const char* expression_text,
7220 const char* actual_predicate_value,
7221 const char* expected_predicate_value);
7252template <
typename RawType>
7262 static const size_t kBitCount = 8*
sizeof(RawType);
7265 static const size_t kFractionBitCount =
7266 std::numeric_limits<RawType>::digits - 1;
7269 static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount;
7272 static const Bits kSignBitMask =
static_cast<Bits>(1) << (kBitCount - 1);
7275 static const Bits kFractionBitMask =
7276 ~static_cast<Bits>(0) >> (kExponentBitCount + 1);
7279 static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask);
7293 static const size_t kMaxUlps = 4;
7311 return fp.u_.value_;
7316 return ReinterpretBits(kExponentBitMask);
7340 return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0);
7352 if (is_nan() || rhs.
is_nan())
return false;
7354 return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_)
7360 union FloatingPointUnion {
7380 static Bits SignAndMagnitudeToBiased(
const Bits &sam) {
7381 if (kSignBitMask & sam) {
7386 return kSignBitMask | sam;
7392 static Bits DistanceBetweenSignAndMagnitudeNumbers(
const Bits &sam1,
7394 const Bits biased1 = SignAndMagnitudeToBiased(sam1);
7395 const Bits biased2 = SignAndMagnitudeToBiased(sam2);
7396 return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1);
7399 FloatingPointUnion u_;
7422template <
typename T>
7431template <
typename T>
7437template <
typename T>
7472template <
class TestClass>
7513 const char* test_case_name,
7515 const char* type_param,
7516 const char* value_param,
7527#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
7532 TypedTestCasePState() : registered_(
false) {}
7537 bool AddTestName(
const char* file,
int line,
const char* case_name,
7538 const char* test_name) {
7540 fprintf(stderr,
"%s Test %s must be defined before "
7541 "REGISTER_TYPED_TEST_CASE_P(%s, ...).\n",
7546 defined_test_names_.insert(test_name);
7553 const char* VerifyRegisteredTestNames(
7554 const char* file,
int line,
const char* registered_tests);
7558 ::std::set<const char*> defined_test_names_;
7563inline const char* SkipComma(
const char*
str) {
7564 const char* comma = strchr(
str,
',');
7565 if (comma ==
NULL) {
7568 while (
IsSpace(*(++comma))) {}
7575 const char* comma = strchr(
str,
',');
7586template <GTEST_TEMPLATE_ Fixture,
class TestSel,
typename Types>
7587class TypeParameterizedTest {
7593 static bool Register(
const char* prefix,
const char* case_name,
7594 const char* test_names,
int index) {
7595 typedef typename Types::Head Type;
7596 typedef Fixture<Type> FixtureClass;
7597 typedef typename GTEST_BIND_(TestSel, Type) TestClass;
7602 (
std::string(prefix) + (prefix[0] ==
'\0' ?
"" :
"/") + case_name +
"/"
7604 GetPrefixUntilComma(test_names).c_str(),
7605 GetTypeName<Type>().c_str(),
7607 GetTypeId<FixtureClass>(),
7608 TestClass::SetUpTestCase,
7609 TestClass::TearDownTestCase,
7610 new TestFactoryImpl<TestClass>);
7613 return TypeParameterizedTest<Fixture, TestSel, typename Types::Tail>
7614 ::Register(prefix, case_name, test_names,
index + 1);
7619template <GTEST_TEMPLATE_ Fixture,
class TestSel>
7620class TypeParameterizedTest<Fixture, TestSel, Types0> {
7622 static bool Register(
const char* ,
const char* ,
7623 const char* ,
int ) {
7632template <GTEST_TEMPLATE_ Fixture,
typename Tests,
typename Types>
7633class TypeParameterizedTestCase {
7635 static bool Register(
const char* prefix,
const char* case_name,
7636 const char* test_names) {
7637 typedef typename Tests::Head Head;
7640 TypeParameterizedTest<Fixture, Head, Types>::Register(
7641 prefix, case_name, test_names, 0);
7644 return TypeParameterizedTestCase<Fixture, typename Tests::Tail, Types>
7645 ::Register(prefix, case_name, SkipComma(test_names));
7650template <GTEST_TEMPLATE_ Fixture,
typename Types>
7651class TypeParameterizedTestCase<Fixture, Templates0, Types> {
7653 static bool Register(
const char* ,
const char* ,
7672 UnitTest* unit_test,
int skip_count);
7688 operator bool()
const {
return true; }
7716template <
typename T1,
typename T2>
7719template <
typename T>
7726template <
typename T>
7728template <
typename T>
7733#define GTEST_REMOVE_REFERENCE_(T) \
7734 typename ::testing::internal::RemoveReference<T>::type
7739template <
typename T>
7741template <
typename T>
7747template <
typename T,
size_t N>
7752#if defined(_MSC_VER) && _MSC_VER < 1400
7756template <
typename T,
size_t N>
7764#define GTEST_REMOVE_CONST_(T) \
7765 typename ::testing::internal::RemoveConst<T>::type
7768#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \
7769 GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T))
7774template <
typename T>
7776template <
typename T>
7781#define GTEST_ADD_REFERENCE_(T) \
7782 typename ::testing::internal::AddReference<T>::type
7793#define GTEST_REFERENCE_TO_CONST_(T) \
7794 GTEST_ADD_REFERENCE_(const GTEST_REMOVE_REFERENCE_(T))
7799template <
typename From,
typename To>
7808 static From MakeFrom();
7820 static char Helper(To);
7821 static char (&Helper(...))[2];
7830# pragma warning(push)
7831# pragma warning(disable:4244)
7833 static const bool value =
7834 sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1;
7835# pragma warning(pop)
7836#elif defined(__BORLANDC__)
7840 static const bool value = __is_convertible(From, To);
7843 sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1;
7846template <
typename From,
typename To>
7852template <
typename T>
7855 ImplicitlyConvertible<const T*, const ::ProtocolMessage*>::value ||
7856 ImplicitlyConvertible<const T*, const ::proto2::Message*>::value> {
7883 typename C::iterator* =
NULL,
7884 typename C::const_iterator* =
NULL) {
7905template <
typename T,
typename U>
7909template <
typename T,
typename U>
7910inline bool ArrayEq(
const T& lhs,
const U& rhs) {
return lhs == rhs; }
7913template <
typename T,
typename U,
size_t N>
7921template <
typename T,
typename U>
7923 for (
size_t i = 0; i !=
size; i++) {
7932template <
typename Iter,
typename Element>
7934 for (Iter it = begin; it !=
end; ++it) {
7945template <
typename T,
typename U>
7949template <
typename T,
typename U>
7953template <
typename T,
typename U,
size_t N>
7961template <
typename T,
typename U>
7963 for (
size_t i = 0; i !=
size; i++) {
7984template <
typename Element>
7994 Init(array,
count, relation);
7999 Init(rhs.array_, rhs.size_, rhs.relation_to_source_);
8007 if (relation_to_source_ ==
kCopy)
8012 size_t size()
const {
return size_; }
8023 void Init(
const Element* array,
size_t a_size,
RelationToSource relation) {
8027 Element*
const copy =
new Element[a_size];
8032 relation_to_source_ = relation;
8035 const Element* array_;
8045#define GTEST_MESSAGE_AT_(file, line, message, result_type) \
8046 ::testing::internal::AssertHelper(result_type, file, line, message) \
8047 = ::testing::Message()
8049#define GTEST_MESSAGE_(message, result_type) \
8050 GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type)
8052#define GTEST_FATAL_FAILURE_(message) \
8053 return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure)
8055#define GTEST_NONFATAL_FAILURE_(message) \
8056 GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure)
8058#define GTEST_SUCCESS_(message) \
8059 GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess)
8064#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \
8065 if (::testing::internal::AlwaysTrue()) { statement; }
8067#define GTEST_TEST_THROW_(statement, expected_exception, fail) \
8068 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
8069 if (::testing::internal::ConstCharPtr gtest_msg = "") { \
8070 bool gtest_caught_expected = false; \
8072 GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
8074 catch (expected_exception const&) { \
8075 gtest_caught_expected = true; \
8079 "Expected: " #statement " throws an exception of type " \
8080 #expected_exception ".\n Actual: it throws a different type."; \
8081 goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
8083 if (!gtest_caught_expected) { \
8085 "Expected: " #statement " throws an exception of type " \
8086 #expected_exception ".\n Actual: it throws nothing."; \
8087 goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
8090 GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__): \
8091 fail(gtest_msg.value)
8093#define GTEST_TEST_NO_THROW_(statement, fail) \
8094 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
8095 if (::testing::internal::AlwaysTrue()) { \
8097 GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
8100 goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
8103 GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \
8104 fail("Expected: " #statement " doesn't throw an exception.\n" \
8105 " Actual: it throws.")
8107#define GTEST_TEST_ANY_THROW_(statement, fail) \
8108 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
8109 if (::testing::internal::AlwaysTrue()) { \
8110 bool gtest_caught_any = false; \
8112 GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
8115 gtest_caught_any = true; \
8117 if (!gtest_caught_any) { \
8118 goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \
8121 GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \
8122 fail("Expected: " #statement " throws an exception.\n" \
8123 " Actual: it doesn't.")
8129#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \
8130 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
8131 if (const ::testing::AssertionResult gtest_ar_ = \
8132 ::testing::AssertionResult(expression)) \
8135 fail(::testing::internal::GetBoolAssertionFailureMessage(\
8136 gtest_ar_, text, #actual, #expected).c_str())
8138#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \
8139 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
8140 if (::testing::internal::AlwaysTrue()) { \
8141 ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \
8142 GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
8143 if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \
8144 goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \
8147 GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \
8148 fail("Expected: " #statement " doesn't generate new fatal " \
8149 "failures in the current thread.\n" \
8150 " Actual: it does.")
8153#define GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
8154 test_case_name##_##test_name##_Test
8157#define GTEST_TEST_(test_case_name, test_name, parent_class, parent_id)\
8158class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\
8160 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\
8162 virtual void TestBody();\
8163 static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_;\
8164 GTEST_DISALLOW_COPY_AND_ASSIGN_(\
8165 GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\
8168::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)\
8170 ::testing::internal::MakeAndRegisterTestInfo(\
8171 #test_case_name, #test_name, NULL, NULL, \
8173 parent_class::SetUpTestCase, \
8174 parent_class::TearDownTestCase, \
8175 new ::testing::internal::TestFactoryImpl<\
8176 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>);\
8177void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
8217#ifndef GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
8218#define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
8256#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
8257#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
8272#if GTEST_HAS_DEATH_TEST
8297 static bool Create(
const char* statement,
const RE* regex,
8298 const char* file,
int line, DeathTest** test);
8300 virtual ~DeathTest() { }
8303 class ReturnSentinel {
8305 explicit ReturnSentinel(DeathTest* test) : test_(test) { }
8306 ~ReturnSentinel() { test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); }
8308 DeathTest*
const test_;
8317 enum TestRole { OVERSEE_TEST, EXECUTE_TEST };
8321 TEST_ENCOUNTERED_RETURN_STATEMENT,
8322 TEST_THREW_EXCEPTION,
8327 virtual TestRole AssumeRole() = 0;
8330 virtual int Wait() = 0;
8339 virtual bool Passed(
bool exit_status_ok) = 0;
8342 virtual void Abort(AbortReason reason) = 0;
8346 static const char* LastMessage();
8348 static void set_last_death_test_message(
const std::string& message);
8358class DeathTestFactory {
8360 virtual ~DeathTestFactory() { }
8361 virtual bool Create(
const char* statement,
const RE* regex,
8362 const char* file,
int line, DeathTest** test) = 0;
8366class DefaultDeathTestFactory :
public DeathTestFactory {
8368 virtual bool Create(
const char* statement,
const RE* regex,
8369 const char* file,
int line, DeathTest** test);
8374GTEST_API_ bool ExitedUnsuccessfully(
int exit_status);
8378# if GTEST_HAS_EXCEPTIONS
8379# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
8381 GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
8382 } catch (const ::std::exception& gtest_exception) { \
8385 "\n%s: Caught std::exception-derived exception escaping the " \
8386 "death test statement. Exception message: %s\n", \
8387 ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \
8388 gtest_exception.what()); \
8390 death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
8392 death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
8396# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
8397 GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
8403# define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \
8404 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
8405 if (::testing::internal::AlwaysTrue()) { \
8406 const ::testing::internal::RE& gtest_regex = (regex); \
8407 ::testing::internal::DeathTest* gtest_dt; \
8408 if (!::testing::internal::DeathTest::Create(#statement, >est_regex, \
8409 __FILE__, __LINE__, >est_dt)) { \
8410 goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \
8412 if (gtest_dt != NULL) { \
8413 ::testing::internal::scoped_ptr< ::testing::internal::DeathTest> \
8414 gtest_dt_ptr(gtest_dt); \
8415 switch (gtest_dt->AssumeRole()) { \
8416 case ::testing::internal::DeathTest::OVERSEE_TEST: \
8417 if (!gtest_dt->Passed(predicate(gtest_dt->Wait()))) { \
8418 goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \
8421 case ::testing::internal::DeathTest::EXECUTE_TEST: { \
8422 ::testing::internal::DeathTest::ReturnSentinel \
8423 gtest_sentinel(gtest_dt); \
8424 GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, gtest_dt); \
8425 gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); \
8433 GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__): \
8434 fail(::testing::internal::DeathTest::LastMessage())
8442# define GTEST_EXECUTE_STATEMENT_(statement, regex) \
8443 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
8444 if (::testing::internal::AlwaysTrue()) { \
8445 GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
8447 ::testing::Message()
8452class InternalRunDeathTestFlag {
8454 InternalRunDeathTestFlag(
const std::string& a_file,
8458 : file_(a_file), line_(a_line), index_(an_index),
8459 write_fd_(a_write_fd) {}
8461 ~InternalRunDeathTestFlag() {
8467 int line()
const {
return line_; }
8468 int index()
const {
return index_; }
8469 int write_fd()
const {
return write_fd_; }
8483InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag();
8519# define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \
8520 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
8521 if (::testing::internal::AlwaysTrue()) { \
8522 GTEST_LOG_(WARNING) \
8523 << "Death tests are not supported on this platform.\n" \
8524 << "Statement '" #statement "' cannot be verified."; \
8525 } else if (::testing::internal::AlwaysFalse()) { \
8526 ::testing::internal::RE::PartialMatch(".*", (regex)); \
8527 GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
8530 ::testing::Message()
8548#if GTEST_HAS_DEATH_TEST
8664# define ASSERT_EXIT(statement, predicate, regex) \
8665 GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_)
8669# define EXPECT_EXIT(statement, predicate, regex) \
8670 GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_)
8675# define ASSERT_DEATH(statement, regex) \
8676 ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
8680# define EXPECT_DEATH(statement, regex) \
8681 EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
8688 explicit ExitedWithCode(
int exit_code);
8689 bool operator()(
int exit_status)
const;
8692 void operator=(
const ExitedWithCode& other);
8694 const int exit_code_;
8697# if !GTEST_OS_WINDOWS
8702 explicit KilledBySignal(
int signum);
8703 bool operator()(
int exit_status)
const;
8754# define EXPECT_DEBUG_DEATH(statement, regex) \
8755 GTEST_EXECUTE_STATEMENT_(statement, regex)
8757# define ASSERT_DEBUG_DEATH(statement, regex) \
8758 GTEST_EXECUTE_STATEMENT_(statement, regex)
8762# define EXPECT_DEBUG_DEATH(statement, regex) \
8763 EXPECT_DEATH(statement, regex)
8765# define ASSERT_DEBUG_DEATH(statement, regex) \
8766 ASSERT_DEATH(statement, regex)
8776#if GTEST_HAS_DEATH_TEST
8777# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
8778 EXPECT_DEATH(statement, regex)
8779# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
8780 ASSERT_DEATH(statement, regex)
8782# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
8783 GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, )
8784# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
8785 GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, return)
8831#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
8832#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
8858TEST_P(FooTest, DoesBlah) {
8865TEST_P(FooTest, HasBlahBlah) {
8895 Values(
"meeny",
"miny",
"moe"));
8916const char* pets[] = {
"cat",
"dog"};
8961TEST_F(BaseTest, HasFoo) {
8965TEST_P(DerivedTest, DoesBlah) {
8973#if !GTEST_OS_SYMBIAN
9013#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
9014#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
9090#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
9091#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
9134 while (p->next_ !=
ptr) p = p->next_;
9145 if (next_ ==
this)
return true;
9147 while (p->next_ !=
this) p = p->next_;
9156template <
typename T>
9169 assert(&
ptr !=
this);
9199 template <
typename U>
9201 return value_ ==
ptr.get();
9203 template <
typename U>
9205 return value_ !=
ptr.get();
9209 template <
typename U>
9216 if (link_.
depart())
delete value_;
9219 void capture(
T*
ptr) {
9224 template <
typename U>
void copy(linked_ptr<U>
const*
ptr) {
9225 value_ =
ptr->get();
9233template<
typename T>
inline
9235 return ptr ==
x.get();
9238template<
typename T>
inline
9240 return ptr !=
x.get();
9246template <
typename T>
9349#ifndef GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
9350#define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
9362namespace internal2 {
9368 ::std::ostream* os);
9383template <
typename T, TypeKind kTypeKind>
9398template <
typename T>
9405 short_str : (
"\n" +
value.DebugString());
9406 *os << (
"<" + pretty_str +
">");
9410template <
typename T>
9450template <
typename Char,
typename CharTraits,
typename T>
9451::std::basic_ostream<Char, CharTraits>&
operator<<(
9452 ::std::basic_ostream<Char, CharTraits>& os,
const T&
x) {
9453 TypeWithoutFormatter<
T,
9469template <
typename T>
9512template <
typename T>
9513class UniversalPrinter;
9515template <
typename T>
9520template <
typename C>
9523 const C& container, ::std::ostream* os) {
9524 const size_t kMaxCount = 32;
9527 for (
typename C::const_iterator it = container.begin();
9528 it != container.end(); ++it, ++
count) {
9531 if (
count == kMaxCount) {
9554template <
typename T>
9557 T* p, ::std::ostream* os) {
9578 *os << reinterpret_cast<const void*>(
9586template <
typename T>
9589 const T&
value, ::std::ostream* os) {
9604template <
typename T>
9642 PrintTo(
static_cast<unsigned char>(
c), os);
9647 *os << (
x ?
"true" :
"false");
9662 PrintTo(ImplicitCast_<const char*>(s), os);
9667inline void PrintTo(
const signed char* s, ::std::ostream* os) {
9668 PrintTo(ImplicitCast_<const void*>(s), os);
9670inline void PrintTo(
signed char* s, ::std::ostream* os) {
9671 PrintTo(ImplicitCast_<const void*>(s), os);
9673inline void PrintTo(
const unsigned char* s, ::std::ostream* os) {
9674 PrintTo(ImplicitCast_<const void*>(s), os);
9676inline void PrintTo(
unsigned char* s, ::std::ostream* os) {
9677 PrintTo(ImplicitCast_<const void*>(s), os);
9685#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
9688inline void PrintTo(
wchar_t* s, ::std::ostream* os) {
9689 PrintTo(ImplicitCast_<const wchar_t*>(s), os);
9698template <
typename T>
9701 for (
size_t i = 1; i !=
count; i++) {
9708#if GTEST_HAS_GLOBAL_STRING
9721#if GTEST_HAS_GLOBAL_WSTRING
9728#if GTEST_HAS_STD_WSTRING
9735#if GTEST_HAS_TR1_TUPLE
9741template <
typename T>
9749inline void PrintTo(const ::std::tr1::tuple<>& t, ::std::ostream* os) {
9753template <
typename T1>
9754void PrintTo(const ::std::tr1::tuple<T1>& t, ::std::ostream* os) {
9758template <
typename T1,
typename T2>
9759void PrintTo(const ::std::tr1::tuple<T1, T2>& t, ::std::ostream* os) {
9763template <
typename T1,
typename T2,
typename T3>
9764void PrintTo(const ::std::tr1::tuple<T1, T2, T3>& t, ::std::ostream* os) {
9768template <
typename T1,
typename T2,
typename T3,
typename T4>
9769void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4>& t, ::std::ostream* os) {
9773template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
9774void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5>& t,
9775 ::std::ostream* os) {
9779template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
9781void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6>& t,
9782 ::std::ostream* os) {
9786template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
9787 typename T6,
typename T7>
9788void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7>& t,
9789 ::std::ostream* os) {
9793template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
9794 typename T6,
typename T7,
typename T8>
9795void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8>& t,
9796 ::std::ostream* os) {
9800template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
9801 typename T6,
typename T7,
typename T8,
typename T9>
9802void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>& t,
9803 ::std::ostream* os) {
9807template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
9808 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
9810 const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>& t,
9811 ::std::ostream* os) {
9817template <
typename T1,
typename T2>
9830template <
typename T>
9836# pragma warning(push)
9837# pragma warning(disable:4180)
9856# pragma warning(pop)
9862template <
typename T>
9868 const size_t kThreshold = 18;
9869 const size_t kChunkSize = 8;
9874 if (
len <= kThreshold) {
9886 const char* begin,
size_t len, ::std::ostream* os);
9890 const wchar_t* begin,
size_t len, ::std::ostream* os);
9893template <
typename T,
size_t N>
9898 static void Print(
const T (&
a)[N], ::std::ostream* os) {
9904template <
typename T>
9910# pragma warning(push)
9911# pragma warning(disable:4180)
9917 *os <<
"@" <<
reinterpret_cast<const void*
>(&
value) <<
" ";
9924# pragma warning(pop)
9932template <
typename T>
9939template <
typename T>
9946template <
typename T,
size_t N>
9956 static void Print(
const char*
str, ::std::ostream* os) {
9972#if GTEST_HAS_STD_WSTRING
9976 static void Print(
const wchar_t*
str, ::std::ostream* os) {
9994template <
typename T>
10003template <
typename T>
10011#if GTEST_HAS_TR1_TUPLE
10025 template <
typename Tuple>
10030 ::Print(::std::tr1::get<N - 1>(t), os);
10035 template <
typename Tuple>
10038 ::std::stringstream ss;
10040 strings->push_back(ss.str());
10047 template <
typename Tuple>
10050 template <
typename Tuple>
10060 template <
typename Tuple>
10063 Print(::std::tr1::get<0>(t), os);
10066 template <
typename Tuple>
10068 ::std::stringstream ss;
10070 strings->push_back(ss.str());
10076template <
typename T>
10080 PrintPrefixTo(t, os);
10087template <
typename Tuple>
10098template <
typename T>
10100 ::std::stringstream ss;
10109#if GTEST_HAS_PARAM_TEST
10112namespace internal {
10121 const char* file,
int line);
10128template <
typename T>
10158template <
typename T>
10168 if (
this != &other)
10169 impl_.reset(other.impl_->Clone());
10187 return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_);
10190 return !(*
this == other);
10196 scoped_ptr<ParamIteratorInterface<T> > impl_;
10201template <
typename T>
10218template<
typename T>
10227 impl_ = other.impl_;
10242template <
typename T,
typename IncrementT>
10246 : begin_(begin), end_(
end),
10247 step_(
step), end_index_(CalculateEndIndex(begin,
end,
step)) {}
10251 return new Iterator(
this, begin_, 0, step_);
10254 return new Iterator(
this, end_, end_index_, step_);
10263 virtual ~Iterator() {}
10265 virtual const ParamGeneratorInterface<T>* BaseGenerator()
const {
10268 virtual void Advance() {
10269 value_ = value_ + step_;
10272 virtual ParamIteratorInterface<T>* Clone()
const {
10273 return new Iterator(*
this);
10275 virtual const T* Current()
const {
return &value_; }
10276 virtual bool Equals(
const ParamIteratorInterface<T>& other)
const {
10279 GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
10280 <<
"The program attempted to compare iterators "
10281 <<
"from different generators." << std::endl;
10282 const int other_index =
10283 CheckedDowncastToActualType<const Iterator>(&other)->index_;
10284 return index_ == other_index;
10288 Iterator(
const Iterator& other)
10289 : ParamIteratorInterface<
T>(),
10290 base_(other.base_), value_(other.value_), index_(other.index_),
10291 step_(other.step_) {}
10294 void operator=(
const Iterator& other);
10296 const ParamGeneratorInterface<T>*
const base_;
10299 const IncrementT step_;
10302 static int CalculateEndIndex(
const T& begin,
10304 const IncrementT&
step) {
10306 for (
T i = begin; i <
end; i = i +
step)
10312 void operator=(
const RangeGenerator& other);
10316 const IncrementT step_;
10319 const int end_index_;
10327template <
typename T>
10330 template <
typename ForwardIterator>
10332 : container_(begin,
end) {}
10336 return new Iterator(
this, container_.begin());
10339 return new Iterator(
this, container_.end());
10343 typedef typename ::std::vector<T> ContainerType;
10348 typename ContainerType::const_iterator iterator)
10349 : base_(base), iterator_(iterator) {}
10350 virtual ~Iterator() {}
10352 virtual const ParamGeneratorInterface<T>* BaseGenerator()
const {
10355 virtual void Advance() {
10359 virtual ParamIteratorInterface<T>* Clone()
const {
10360 return new Iterator(*
this);
10369 virtual const T* Current()
const {
10370 if (value_.get() ==
NULL)
10371 value_.reset(
new T(*iterator_));
10372 return value_.get();
10374 virtual bool Equals(
const ParamIteratorInterface<T>& other)
const {
10377 GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
10378 <<
"The program attempted to compare iterators "
10379 <<
"from different generators." << std::endl;
10380 return iterator_ ==
10381 CheckedDowncastToActualType<const Iterator>(&other)->iterator_;
10385 Iterator(
const Iterator& other)
10388 : ParamIteratorInterface<
T>(),
10389 base_(other.base_),
10390 iterator_(other.iterator_) {}
10392 const ParamGeneratorInterface<T>*
const base_;
10393 typename ContainerType::const_iterator iterator_;
10399 mutable scoped_ptr<const T> value_;
10403 void operator=(
const ValuesInIteratorRangeGenerator& other);
10405 const ContainerType container_;
10412template <
class TestClass>
10417 parameter_(parameter) {}
10419 TestClass::SetParam(¶meter_);
10420 return new TestClass();
10424 const ParamType parameter_;
10433template <
class ParamType>
10449template <
class TestCase>
10503template <
class TestCase>
10514 : test_case_name_(
name) {}
10527 const char* test_base_name,
10536 GeneratorCreationFunc*
func,
10539 instantiations_.push_back(::std::make_pair(instantiation_name,
func));
10548 for (
typename TestInfoContainer::iterator test_it = tests_.begin();
10549 test_it != tests_.end(); ++test_it) {
10551 for (
typename InstantiationContainer::iterator gen_it =
10552 instantiations_.begin(); gen_it != instantiations_.end();
10554 const string& instantiation_name = gen_it->first;
10557 string test_case_name;
10558 if ( !instantiation_name.empty() )
10559 test_case_name = instantiation_name +
"/";
10560 test_case_name += test_info->test_case_base_name;
10565 param_it != generator.
end(); ++param_it, ++i) {
10567 test_name_stream << test_info->test_base_name <<
"/" << i;
10569 test_case_name.c_str(),
10573 GetTestCaseTypeId(),
10574 TestCase::SetUpTestCase,
10575 TestCase::TearDownTestCase,
10576 test_info->test_meta_factory->CreateTestFactory(*param_it));
10586 TestInfo(
const char* a_test_case_base_name,
10587 const char* a_test_base_name,
10589 test_case_base_name(a_test_case_base_name),
10590 test_base_name(a_test_base_name),
10591 test_meta_factory(a_test_meta_factory) {}
10593 const string test_case_base_name;
10594 const string test_base_name;
10595 const scoped_ptr<TestMetaFactoryBase<ParamType> > test_meta_factory;
10597 typedef ::std::vector<linked_ptr<TestInfo> > TestInfoContainer;
10600 typedef ::std::vector<std::pair<string, GeneratorCreationFunc*> >
10601 InstantiationContainer;
10603 const string test_case_name_;
10604 TestInfoContainer tests_;
10605 InstantiationContainer instantiations_;
10620 for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();
10621 it != test_case_infos_.end(); ++it) {
10628 template <
class TestCase>
10630 const char* test_case_name,
10634 for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();
10635 it != test_case_infos_.end(); ++it) {
10636 if ((*it)->GetTestCaseName() == test_case_name) {
10637 if ((*it)->GetTestCaseTypeId() != GetTypeId<TestCase>()) {
10653 if (typed_test_info ==
NULL) {
10655 test_case_infos_.push_back(typed_test_info);
10657 return typed_test_info;
10660 for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();
10661 it != test_case_infos_.end(); ++it) {
10662 (*it)->RegisterTests();
10667 typedef ::std::vector<ParameterizedTestCaseInfoBase*> TestCaseInfoContainer;
10669 TestCaseInfoContainer test_case_infos_;
10725#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
10726#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
10732#if GTEST_HAS_PARAM_TEST
10738template <
typename ForwardIterator>
10739internal::ParamGenerator<
10740 typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
10741ValuesIn(ForwardIterator begin, ForwardIterator
end);
10743template <
typename T,
size_t N>
10744internal::ParamGenerator<T>
ValuesIn(
const T (&array)[N]);
10746template <
class Container>
10747internal::ParamGenerator<typename Container::value_type>
ValuesIn(
10748 const Container& container);
10750namespace internal {
10753template <
typename T1>
10758 template <
typename T>
10768template <
typename T1,
typename T2>
10773 template <
typename T>
10775 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_)};
10787template <
typename T1,
typename T2,
typename T3>
10792 template <
typename T>
10794 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
10795 static_cast<T>(v3_)};
10808template <
typename T1,
typename T2,
typename T3,
typename T4>
10814 template <
typename T>
10816 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
10817 static_cast<T>(v3_),
static_cast<T>(v4_)};
10831template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
10834 ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3),
10835 v4_(v4), v5_(v5) {}
10837 template <
typename T>
10839 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
10840 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_)};
10855template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
10860 v3_(v3), v4_(v4), v5_(v5), v6_(v6) {}
10862 template <
typename T>
10864 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
10865 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
10866 static_cast<T>(v6_)};
10882template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
10883 typename T6,
typename T7>
10887 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {}
10889 template <
typename T>
10891 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
10892 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
10893 static_cast<T>(v6_),
static_cast<T>(v7_)};
10910template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
10911 typename T6,
typename T7,
typename T8>
10915 T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
10918 template <
typename T>
10920 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
10921 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
10922 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_)};
10940template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
10941 typename T6,
typename T7,
typename T8,
typename T9>
10945 T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
10946 v8_(v8), v9_(v9) {}
10948 template <
typename T>
10950 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
10951 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
10952 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
10953 static_cast<T>(v9_)};
10972template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
10973 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
10977 T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
10978 v8_(v8), v9_(v9), v10_(v10) {}
10980 template <
typename T>
10982 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
10983 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
10984 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
10985 static_cast<T>(v9_),
static_cast<T>(v10_)};
11005template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11006 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11011 T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
11012 v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {}
11014 template <
typename T>
11016 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11017 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11018 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11019 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_)};
11040template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11041 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11042 typename T11,
typename T12>
11046 T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
11047 v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {}
11049 template <
typename T>
11051 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11052 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11053 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11054 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11055 static_cast<T>(v12_)};
11077template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11078 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11079 typename T11,
typename T12,
typename T13>
11083 T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
11084 v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
11085 v12_(v12), v13_(v13) {}
11087 template <
typename T>
11089 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11090 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11091 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11092 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11093 static_cast<T>(v12_),
static_cast<T>(v13_)};
11116template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11117 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11118 typename T11,
typename T12,
typename T13,
typename T14>
11122 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3),
11123 v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
11124 v11_(v11), v12_(v12), v13_(v13), v14_(v14) {}
11126 template <
typename T>
11128 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11129 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11130 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11131 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11132 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_)};
11156template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11157 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11158 typename T11,
typename T12,
typename T13,
typename T14,
typename T15>
11162 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2),
11163 v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
11164 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {}
11166 template <
typename T>
11168 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11169 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11170 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11171 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11172 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
11173 static_cast<T>(v15_)};
11198template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11199 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11200 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
11205 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1),
11206 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
11207 v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
11210 template <
typename T>
11212 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11213 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11214 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11215 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11216 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
11217 static_cast<T>(v15_),
static_cast<T>(v16_)};
11243template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11244 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11245 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
11246 typename T16,
typename T17>
11250 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
11251 T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
11252 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
11253 v15_(v15), v16_(v16), v17_(v17) {}
11255 template <
typename T>
11257 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11258 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11259 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11260 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11261 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
11262 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_)};
11289template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11290 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11291 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
11292 typename T16,
typename T17,
typename T18>
11296 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
11297 T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
11298 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
11299 v15_(v15), v16_(v16), v17_(v17), v18_(v18) {}
11301 template <
typename T>
11303 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11304 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11305 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11306 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11307 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
11308 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
11309 static_cast<T>(v18_)};
11337template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11338 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11339 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
11340 typename T16,
typename T17,
typename T18,
typename T19>
11344 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
11345 T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
11346 v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
11347 v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {}
11349 template <
typename T>
11351 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11352 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11353 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11354 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11355 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
11356 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
11357 static_cast<T>(v18_),
static_cast<T>(v19_)};
11386template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11387 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11388 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
11389 typename T16,
typename T17,
typename T18,
typename T19,
typename T20>
11393 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
11394 T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
11395 v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
11396 v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
11397 v19_(v19), v20_(v20) {}
11399 template <
typename T>
11401 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11402 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11403 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11404 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11405 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
11406 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
11407 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_)};
11437template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11438 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11439 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
11440 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
11445 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
11446 T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
11447 v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
11448 v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
11449 v18_(v18), v19_(v19), v20_(v20), v21_(v21) {}
11451 template <
typename T>
11453 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11454 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11455 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11456 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11457 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
11458 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
11459 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
11460 static_cast<T>(v21_)};
11491template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11492 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11493 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
11494 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
11495 typename T21,
typename T22>
11499 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
11500 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3),
11501 v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
11502 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
11503 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {}
11505 template <
typename T>
11507 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11508 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11509 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11510 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11511 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
11512 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
11513 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
11514 static_cast<T>(v21_),
static_cast<T>(v22_)};
11546template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11547 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11548 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
11549 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
11550 typename T21,
typename T22,
typename T23>
11554 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
11555 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2),
11556 v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
11557 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
11558 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
11561 template <
typename T>
11563 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11564 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11565 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11566 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11567 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
11568 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
11569 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
11570 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_)};
11603template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11604 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11605 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
11606 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
11607 typename T21,
typename T22,
typename T23,
typename T24>
11611 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
11612 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1),
11613 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
11614 v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
11615 v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
11616 v22_(v22), v23_(v23), v24_(v24) {}
11618 template <
typename T>
11620 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11621 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11622 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11623 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11624 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
11625 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
11626 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
11627 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
11628 static_cast<T>(v24_)};
11662template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11663 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11664 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
11665 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
11666 typename T21,
typename T22,
typename T23,
typename T24,
typename T25>
11670 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
11671 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
11672 T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
11673 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
11674 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
11675 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {}
11677 template <
typename T>
11679 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11680 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11681 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11682 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11683 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
11684 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
11685 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
11686 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
11687 static_cast<T>(v24_),
static_cast<T>(v25_)};
11722template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11723 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11724 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
11725 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
11726 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
11731 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
11732 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
11733 T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
11734 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
11735 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
11736 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {}
11738 template <
typename T>
11740 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11741 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11742 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11743 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11744 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
11745 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
11746 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
11747 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
11748 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_)};
11784template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11785 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11786 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
11787 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
11788 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
11789 typename T26,
typename T27>
11793 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
11794 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
11795 T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
11796 v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
11797 v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
11798 v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
11799 v26_(v26), v27_(v27) {}
11801 template <
typename T>
11803 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11804 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11805 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11806 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11807 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
11808 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
11809 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
11810 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
11811 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
11812 static_cast<T>(v27_)};
11849template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11850 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11851 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
11852 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
11853 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
11854 typename T26,
typename T27,
typename T28>
11858 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
11859 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
11860 T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
11861 v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
11862 v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
11863 v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
11864 v25_(v25), v26_(v26), v27_(v27), v28_(v28) {}
11866 template <
typename T>
11868 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11869 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11870 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11871 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11872 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
11873 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
11874 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
11875 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
11876 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
11877 static_cast<T>(v27_),
static_cast<T>(v28_)};
11915template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11916 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11917 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
11918 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
11919 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
11920 typename T26,
typename T27,
typename T28,
typename T29>
11924 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
11925 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
11926 T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
11927 v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
11928 v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
11929 v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
11930 v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {}
11932 template <
typename T>
11934 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
11935 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
11936 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
11937 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
11938 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
11939 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
11940 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
11941 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
11942 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
11943 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_)};
11982template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
11983 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
11984 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
11985 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
11986 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
11987 typename T26,
typename T27,
typename T28,
typename T29,
typename T30>
11991 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
11992 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
11993 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3),
11994 v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
11995 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
11996 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
11997 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
11998 v29_(v29), v30_(v30) {}
12000 template <
typename T>
12002 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
12003 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
12004 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
12005 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
12006 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
12007 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
12008 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
12009 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
12010 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
12011 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
12012 static_cast<T>(v30_)};
12052template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
12053 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
12054 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
12055 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
12056 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
12057 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
12062 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
12063 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
12064 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2),
12065 v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
12066 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
12067 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
12068 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
12069 v29_(v29), v30_(v30), v31_(v31) {}
12071 template <
typename T>
12073 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
12074 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
12075 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
12076 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
12077 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
12078 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
12079 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
12080 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
12081 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
12082 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
12083 static_cast<T>(v30_),
static_cast<T>(v31_)};
12124template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
12125 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
12126 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
12127 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
12128 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
12129 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
12130 typename T31,
typename T32>
12134 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
12135 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
12136 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1),
12137 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
12138 v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
12139 v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
12140 v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
12141 v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {}
12143 template <
typename T>
12145 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
12146 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
12147 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
12148 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
12149 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
12150 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
12151 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
12152 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
12153 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
12154 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
12155 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_)};
12197template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
12198 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
12199 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
12200 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
12201 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
12202 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
12203 typename T31,
typename T32,
typename T33>
12207 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
12208 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
12209 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,
12210 T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
12211 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
12212 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
12213 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
12214 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
12217 template <
typename T>
12219 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
12220 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
12221 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
12222 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
12223 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
12224 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
12225 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
12226 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
12227 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
12228 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
12229 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
12230 static_cast<T>(v33_)};
12273template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
12274 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
12275 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
12276 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
12277 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
12278 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
12279 typename T31,
typename T32,
typename T33,
typename T34>
12283 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
12284 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
12285 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
12286 T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
12287 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
12288 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
12289 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
12290 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
12291 v33_(v33), v34_(v34) {}
12293 template <
typename T>
12295 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
12296 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
12297 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
12298 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
12299 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
12300 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
12301 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
12302 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
12303 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
12304 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
12305 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
12306 static_cast<T>(v33_),
static_cast<T>(v34_)};
12350template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
12351 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
12352 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
12353 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
12354 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
12355 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
12356 typename T31,
typename T32,
typename T33,
typename T34,
typename T35>
12360 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
12361 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
12362 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
12363 T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
12364 v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
12365 v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
12366 v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
12367 v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
12368 v32_(v32), v33_(v33), v34_(v34), v35_(v35) {}
12370 template <
typename T>
12372 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
12373 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
12374 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
12375 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
12376 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
12377 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
12378 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
12379 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
12380 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
12381 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
12382 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
12383 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_)};
12428template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
12429 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
12430 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
12431 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
12432 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
12433 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
12434 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
12439 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
12440 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
12441 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
12442 T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
12443 v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
12444 v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
12445 v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
12446 v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
12447 v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {}
12449 template <
typename T>
12451 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
12452 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
12453 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
12454 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
12455 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
12456 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
12457 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
12458 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
12459 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
12460 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
12461 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
12462 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
12463 static_cast<T>(v36_)};
12509template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
12510 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
12511 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
12512 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
12513 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
12514 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
12515 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
12516 typename T36,
typename T37>
12520 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
12521 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
12522 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
12523 T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
12524 v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
12525 v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
12526 v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
12527 v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
12528 v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
12529 v36_(v36), v37_(v37) {}
12531 template <
typename T>
12533 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
12534 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
12535 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
12536 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
12537 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
12538 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
12539 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
12540 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
12541 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
12542 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
12543 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
12544 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
12545 static_cast<T>(v36_),
static_cast<T>(v37_)};
12592template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
12593 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
12594 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
12595 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
12596 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
12597 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
12598 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
12599 typename T36,
typename T37,
typename T38>
12603 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
12604 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
12605 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
12606 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3),
12607 v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
12608 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
12609 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
12610 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
12611 v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
12612 v35_(v35), v36_(v36), v37_(v37), v38_(v38) {}
12614 template <
typename T>
12616 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
12617 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
12618 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
12619 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
12620 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
12621 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
12622 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
12623 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
12624 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
12625 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
12626 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
12627 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
12628 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_)};
12676template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
12677 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
12678 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
12679 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
12680 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
12681 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
12682 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
12683 typename T36,
typename T37,
typename T38,
typename T39>
12687 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
12688 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
12689 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
12690 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2),
12691 v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
12692 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
12693 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
12694 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
12695 v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
12696 v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {}
12698 template <
typename T>
12700 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
12701 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
12702 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
12703 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
12704 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
12705 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
12706 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
12707 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
12708 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
12709 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
12710 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
12711 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
12712 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
12713 static_cast<T>(v39_)};
12762template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
12763 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
12764 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
12765 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
12766 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
12767 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
12768 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
12769 typename T36,
typename T37,
typename T38,
typename T39,
typename T40>
12773 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
12774 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
12775 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
12776 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1),
12777 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
12778 v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
12779 v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
12780 v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
12781 v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
12782 v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
12785 template <
typename T>
12787 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
12788 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
12789 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
12790 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
12791 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
12792 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
12793 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
12794 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
12795 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
12796 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
12797 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
12798 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
12799 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
12800 static_cast<T>(v39_),
static_cast<T>(v40_)};
12850template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
12851 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
12852 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
12853 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
12854 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
12855 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
12856 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
12857 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
12862 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
12863 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
12864 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
12865 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,
12866 T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
12867 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
12868 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
12869 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
12870 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
12871 v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
12872 v39_(v39), v40_(v40), v41_(v41) {}
12874 template <
typename T>
12876 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
12877 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
12878 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
12879 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
12880 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
12881 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
12882 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
12883 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
12884 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
12885 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
12886 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
12887 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
12888 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
12889 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_)};
12940template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
12941 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
12942 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
12943 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
12944 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
12945 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
12946 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
12947 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
12948 typename T41,
typename T42>
12952 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
12953 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
12954 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
12955 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
12956 T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
12957 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
12958 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
12959 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
12960 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
12961 v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
12962 v39_(v39), v40_(v40), v41_(v41), v42_(v42) {}
12964 template <
typename T>
12966 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
12967 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
12968 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
12969 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
12970 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
12971 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
12972 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
12973 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
12974 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
12975 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
12976 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
12977 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
12978 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
12979 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
12980 static_cast<T>(v42_)};
13032template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
13033 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
13034 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
13035 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
13036 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
13037 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
13038 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
13039 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
13040 typename T41,
typename T42,
typename T43>
13044 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
13045 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
13046 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
13047 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
13048 T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
13049 v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
13050 v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
13051 v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
13052 v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
13053 v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37),
13054 v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {}
13056 template <
typename T>
13058 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
13059 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
13060 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
13061 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
13062 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
13063 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
13064 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
13065 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
13066 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
13067 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
13068 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
13069 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
13070 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
13071 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
13072 static_cast<T>(v42_),
static_cast<T>(v43_)};
13125template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
13126 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
13127 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
13128 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
13129 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
13130 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
13131 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
13132 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
13133 typename T41,
typename T42,
typename T43,
typename T44>
13137 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
13138 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
13139 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
13140 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
13141 T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
13142 v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
13143 v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
13144 v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
13145 v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
13146 v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36),
13147 v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42),
13148 v43_(v43), v44_(v44) {}
13150 template <
typename T>
13152 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
13153 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
13154 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
13155 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
13156 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
13157 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
13158 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
13159 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
13160 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
13161 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
13162 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
13163 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
13164 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
13165 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
13166 static_cast<T>(v42_),
static_cast<T>(v43_),
static_cast<T>(v44_)};
13220template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
13221 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
13222 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
13223 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
13224 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
13225 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
13226 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
13227 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
13228 typename T41,
typename T42,
typename T43,
typename T44,
typename T45>
13232 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
13233 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
13234 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
13235 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
13236 T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
13237 v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
13238 v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
13239 v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
13240 v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
13241 v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
13242 v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41),
13243 v42_(v42), v43_(v43), v44_(v44), v45_(v45) {}
13245 template <
typename T>
13247 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
13248 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
13249 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
13250 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
13251 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
13252 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
13253 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
13254 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
13255 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
13256 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
13257 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
13258 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
13259 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
13260 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
13261 static_cast<T>(v42_),
static_cast<T>(v43_),
static_cast<T>(v44_),
13262 static_cast<T>(v45_)};
13317template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
13318 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
13319 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
13320 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
13321 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
13322 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
13323 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
13324 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
13325 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
13330 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
13331 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
13332 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
13333 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
13334 T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3),
13335 v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
13336 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
13337 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
13338 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
13339 v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
13340 v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
13341 v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {}
13343 template <
typename T>
13345 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
13346 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
13347 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
13348 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
13349 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
13350 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
13351 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
13352 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
13353 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
13354 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
13355 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
13356 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
13357 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
13358 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
13359 static_cast<T>(v42_),
static_cast<T>(v43_),
static_cast<T>(v44_),
13360 static_cast<T>(v45_),
static_cast<T>(v46_)};
13416template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
13417 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
13418 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
13419 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
13420 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
13421 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
13422 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
13423 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
13424 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
13425 typename T46,
typename T47>
13429 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
13430 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
13431 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
13432 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
13433 T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2),
13434 v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
13435 v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
13436 v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
13437 v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
13438 v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
13439 v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
13440 v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46),
13443 template <
typename T>
13445 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
13446 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
13447 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
13448 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
13449 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
13450 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
13451 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
13452 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
13453 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
13454 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
13455 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
13456 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
13457 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
13458 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
13459 static_cast<T>(v42_),
static_cast<T>(v43_),
static_cast<T>(v44_),
13460 static_cast<T>(v45_),
static_cast<T>(v46_),
static_cast<T>(v47_)};
13517template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
13518 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
13519 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
13520 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
13521 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
13522 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
13523 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
13524 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
13525 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
13526 typename T46,
typename T47,
typename T48>
13530 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
13531 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
13532 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
13533 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
13534 T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1),
13535 v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
13536 v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
13537 v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
13538 v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
13539 v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
13540 v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
13541 v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45),
13542 v46_(v46), v47_(v47), v48_(v48) {}
13544 template <
typename T>
13546 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
13547 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
13548 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
13549 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
13550 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
13551 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
13552 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
13553 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
13554 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
13555 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
13556 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
13557 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
13558 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
13559 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
13560 static_cast<T>(v42_),
static_cast<T>(v43_),
static_cast<T>(v44_),
13561 static_cast<T>(v45_),
static_cast<T>(v46_),
static_cast<T>(v47_),
13562 static_cast<T>(v48_)};
13620template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
13621 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
13622 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
13623 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
13624 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
13625 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
13626 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
13627 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
13628 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
13629 typename T46,
typename T47,
typename T48,
typename T49>
13633 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
13634 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
13635 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
13636 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
13637 T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48,
13638 T49 v49) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
13639 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
13640 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
13641 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
13642 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
13643 v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
13644 v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),
13645 v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {}
13647 template <
typename T>
13649 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
13650 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
13651 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
13652 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
13653 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
13654 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
13655 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
13656 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
13657 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
13658 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
13659 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
13660 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
13661 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
13662 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
13663 static_cast<T>(v42_),
static_cast<T>(v43_),
static_cast<T>(v44_),
13664 static_cast<T>(v45_),
static_cast<T>(v46_),
static_cast<T>(v47_),
13665 static_cast<T>(v48_),
static_cast<T>(v49_)};
13724template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
13725 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
13726 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
13727 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
13728 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
13729 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
13730 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
13731 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
13732 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
13733 typename T46,
typename T47,
typename T48,
typename T49,
typename T50>
13737 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
13738 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
13739 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
13740 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
13741 T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49,
13742 T50 v50) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
13743 v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
13744 v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
13745 v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
13746 v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
13747 v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
13748 v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),
13749 v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {}
13751 template <
typename T>
13753 const T array[] = {
static_cast<T>(v1_),
static_cast<T>(v2_),
13754 static_cast<T>(v3_),
static_cast<T>(v4_),
static_cast<T>(v5_),
13755 static_cast<T>(v6_),
static_cast<T>(v7_),
static_cast<T>(v8_),
13756 static_cast<T>(v9_),
static_cast<T>(v10_),
static_cast<T>(v11_),
13757 static_cast<T>(v12_),
static_cast<T>(v13_),
static_cast<T>(v14_),
13758 static_cast<T>(v15_),
static_cast<T>(v16_),
static_cast<T>(v17_),
13759 static_cast<T>(v18_),
static_cast<T>(v19_),
static_cast<T>(v20_),
13760 static_cast<T>(v21_),
static_cast<T>(v22_),
static_cast<T>(v23_),
13761 static_cast<T>(v24_),
static_cast<T>(v25_),
static_cast<T>(v26_),
13762 static_cast<T>(v27_),
static_cast<T>(v28_),
static_cast<T>(v29_),
13763 static_cast<T>(v30_),
static_cast<T>(v31_),
static_cast<T>(v32_),
13764 static_cast<T>(v33_),
static_cast<T>(v34_),
static_cast<T>(v35_),
13765 static_cast<T>(v36_),
static_cast<T>(v37_),
static_cast<T>(v38_),
13766 static_cast<T>(v39_),
static_cast<T>(v40_),
static_cast<T>(v41_),
13767 static_cast<T>(v42_),
static_cast<T>(v43_),
static_cast<T>(v44_),
13768 static_cast<T>(v45_),
static_cast<T>(v46_),
static_cast<T>(v47_),
13769 static_cast<T>(v48_),
static_cast<T>(v49_),
static_cast<T>(v50_)};
13829# if GTEST_HAS_COMBINE
13835template <
typename T1,
typename T2>
13843 : g1_(g1), g2_(g2) {}
13847 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin());
13850 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end());
13862 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
13863 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2) {
13864 ComputeCurrentValue();
13866 virtual ~Iterator() {}
13868 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
13873 virtual void Advance() {
13876 if (current2_ == end2_) {
13877 current2_ = begin2_;
13880 ComputeCurrentValue();
13882 virtual ParamIteratorInterface<ParamType>* Clone()
const {
13883 return new Iterator(*
this);
13885 virtual const ParamType* Current()
const {
return ¤t_value_; }
13886 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
13889 GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
13890 <<
"The program attempted to compare iterators "
13891 <<
"from different generators." << std::endl;
13892 const Iterator* typed_other =
13893 CheckedDowncastToActualType<const Iterator>(&other);
13897 return (AtEnd() && typed_other->AtEnd()) ||
13899 current1_ == typed_other->current1_ &&
13900 current2_ == typed_other->current2_);
13904 Iterator(
const Iterator& other)
13905 : base_(other.base_),
13906 begin1_(other.begin1_),
13907 end1_(other.end1_),
13908 current1_(other.current1_),
13909 begin2_(other.begin2_),
13910 end2_(other.end2_),
13911 current2_(other.current2_) {
13912 ComputeCurrentValue();
13915 void ComputeCurrentValue() {
13917 current_value_ = ParamType(*current1_, *current2_);
13919 bool AtEnd()
const {
13923 current1_ == end1_ ||
13924 current2_ == end2_;
13928 void operator=(
const Iterator& other);
13930 const ParamGeneratorInterface<ParamType>*
const base_;
13939 ParamType current_value_;
13943 void operator=(
const CartesianProductGenerator2& other);
13945 const ParamGenerator<T1> g1_;
13946 const ParamGenerator<T2> g2_;
13950template <
typename T1,
typename T2,
typename T3>
13958 : g1_(g1), g2_(g2), g3_(g3) {}
13962 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
13966 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end());
13980 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
13981 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2),
13982 begin3_(g3.begin()), end3_(g3.
end()), current3_(current3) {
13983 ComputeCurrentValue();
13985 virtual ~Iterator() {}
13987 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
13992 virtual void Advance() {
13995 if (current3_ == end3_) {
13996 current3_ = begin3_;
13999 if (current2_ == end2_) {
14000 current2_ = begin2_;
14003 ComputeCurrentValue();
14005 virtual ParamIteratorInterface<ParamType>* Clone()
const {
14006 return new Iterator(*
this);
14008 virtual const ParamType* Current()
const {
return ¤t_value_; }
14009 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
14012 GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
14013 <<
"The program attempted to compare iterators "
14014 <<
"from different generators." << std::endl;
14015 const Iterator* typed_other =
14016 CheckedDowncastToActualType<const Iterator>(&other);
14020 return (AtEnd() && typed_other->AtEnd()) ||
14022 current1_ == typed_other->current1_ &&
14023 current2_ == typed_other->current2_ &&
14024 current3_ == typed_other->current3_);
14028 Iterator(
const Iterator& other)
14029 : base_(other.base_),
14030 begin1_(other.begin1_),
14031 end1_(other.end1_),
14032 current1_(other.current1_),
14033 begin2_(other.begin2_),
14034 end2_(other.end2_),
14035 current2_(other.current2_),
14036 begin3_(other.begin3_),
14037 end3_(other.end3_),
14038 current3_(other.current3_) {
14039 ComputeCurrentValue();
14042 void ComputeCurrentValue() {
14044 current_value_ = ParamType(*current1_, *current2_, *current3_);
14046 bool AtEnd()
const {
14050 current1_ == end1_ ||
14051 current2_ == end2_ ||
14052 current3_ == end3_;
14056 void operator=(
const Iterator& other);
14058 const ParamGeneratorInterface<ParamType>*
const base_;
14070 ParamType current_value_;
14074 void operator=(
const CartesianProductGenerator3& other);
14076 const ParamGenerator<T1> g1_;
14077 const ParamGenerator<T2> g2_;
14078 const ParamGenerator<T3> g3_;
14082template <
typename T1,
typename T2,
typename T3,
typename T4>
14091 : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
14095 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
14096 g3_.begin(), g4_, g4_.begin());
14099 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
14116 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
14117 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2),
14118 begin3_(g3.begin()), end3_(g3.
end()), current3_(current3),
14119 begin4_(g4.begin()), end4_(g4.
end()), current4_(current4) {
14120 ComputeCurrentValue();
14122 virtual ~Iterator() {}
14124 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
14129 virtual void Advance() {
14132 if (current4_ == end4_) {
14133 current4_ = begin4_;
14136 if (current3_ == end3_) {
14137 current3_ = begin3_;
14140 if (current2_ == end2_) {
14141 current2_ = begin2_;
14144 ComputeCurrentValue();
14146 virtual ParamIteratorInterface<ParamType>* Clone()
const {
14147 return new Iterator(*
this);
14149 virtual const ParamType* Current()
const {
return ¤t_value_; }
14150 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
14153 GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
14154 <<
"The program attempted to compare iterators "
14155 <<
"from different generators." << std::endl;
14156 const Iterator* typed_other =
14157 CheckedDowncastToActualType<const Iterator>(&other);
14161 return (AtEnd() && typed_other->AtEnd()) ||
14163 current1_ == typed_other->current1_ &&
14164 current2_ == typed_other->current2_ &&
14165 current3_ == typed_other->current3_ &&
14166 current4_ == typed_other->current4_);
14170 Iterator(
const Iterator& other)
14171 : base_(other.base_),
14172 begin1_(other.begin1_),
14173 end1_(other.end1_),
14174 current1_(other.current1_),
14175 begin2_(other.begin2_),
14176 end2_(other.end2_),
14177 current2_(other.current2_),
14178 begin3_(other.begin3_),
14179 end3_(other.end3_),
14180 current3_(other.current3_),
14181 begin4_(other.begin4_),
14182 end4_(other.end4_),
14183 current4_(other.current4_) {
14184 ComputeCurrentValue();
14187 void ComputeCurrentValue() {
14189 current_value_ = ParamType(*current1_, *current2_, *current3_,
14192 bool AtEnd()
const {
14196 current1_ == end1_ ||
14197 current2_ == end2_ ||
14198 current3_ == end3_ ||
14199 current4_ == end4_;
14203 void operator=(
const Iterator& other);
14205 const ParamGeneratorInterface<ParamType>*
const base_;
14220 ParamType current_value_;
14224 void operator=(
const CartesianProductGenerator4& other);
14226 const ParamGenerator<T1> g1_;
14227 const ParamGenerator<T2> g2_;
14228 const ParamGenerator<T3> g3_;
14229 const ParamGenerator<T4> g4_;
14233template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
14242 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
14246 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
14247 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin());
14250 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
14251 g4_, g4_.end(), g5_, g5_.end());
14269 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
14270 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2),
14271 begin3_(g3.begin()), end3_(g3.
end()), current3_(current3),
14272 begin4_(g4.begin()), end4_(g4.
end()), current4_(current4),
14273 begin5_(g5.begin()), end5_(g5.
end()), current5_(current5) {
14274 ComputeCurrentValue();
14276 virtual ~Iterator() {}
14278 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
14283 virtual void Advance() {
14286 if (current5_ == end5_) {
14287 current5_ = begin5_;
14290 if (current4_ == end4_) {
14291 current4_ = begin4_;
14294 if (current3_ == end3_) {
14295 current3_ = begin3_;
14298 if (current2_ == end2_) {
14299 current2_ = begin2_;
14302 ComputeCurrentValue();
14304 virtual ParamIteratorInterface<ParamType>* Clone()
const {
14305 return new Iterator(*
this);
14307 virtual const ParamType* Current()
const {
return ¤t_value_; }
14308 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
14311 GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
14312 <<
"The program attempted to compare iterators "
14313 <<
"from different generators." << std::endl;
14314 const Iterator* typed_other =
14315 CheckedDowncastToActualType<const Iterator>(&other);
14319 return (AtEnd() && typed_other->AtEnd()) ||
14321 current1_ == typed_other->current1_ &&
14322 current2_ == typed_other->current2_ &&
14323 current3_ == typed_other->current3_ &&
14324 current4_ == typed_other->current4_ &&
14325 current5_ == typed_other->current5_);
14329 Iterator(
const Iterator& other)
14330 : base_(other.base_),
14331 begin1_(other.begin1_),
14332 end1_(other.end1_),
14333 current1_(other.current1_),
14334 begin2_(other.begin2_),
14335 end2_(other.end2_),
14336 current2_(other.current2_),
14337 begin3_(other.begin3_),
14338 end3_(other.end3_),
14339 current3_(other.current3_),
14340 begin4_(other.begin4_),
14341 end4_(other.end4_),
14342 current4_(other.current4_),
14343 begin5_(other.begin5_),
14344 end5_(other.end5_),
14345 current5_(other.current5_) {
14346 ComputeCurrentValue();
14349 void ComputeCurrentValue() {
14351 current_value_ = ParamType(*current1_, *current2_, *current3_,
14352 *current4_, *current5_);
14354 bool AtEnd()
const {
14358 current1_ == end1_ ||
14359 current2_ == end2_ ||
14360 current3_ == end3_ ||
14361 current4_ == end4_ ||
14362 current5_ == end5_;
14366 void operator=(
const Iterator& other);
14368 const ParamGeneratorInterface<ParamType>*
const base_;
14386 ParamType current_value_;
14390 void operator=(
const CartesianProductGenerator5& other);
14392 const ParamGenerator<T1> g1_;
14393 const ParamGenerator<T2> g2_;
14394 const ParamGenerator<T3> g3_;
14395 const ParamGenerator<T4> g4_;
14396 const ParamGenerator<T5> g5_;
14400template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
14412 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
14416 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
14417 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin());
14420 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
14421 g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end());
14441 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
14442 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2),
14443 begin3_(g3.begin()), end3_(g3.
end()), current3_(current3),
14444 begin4_(g4.begin()), end4_(g4.
end()), current4_(current4),
14445 begin5_(g5.begin()), end5_(g5.
end()), current5_(current5),
14446 begin6_(g6.begin()), end6_(g6.
end()), current6_(current6) {
14447 ComputeCurrentValue();
14449 virtual ~Iterator() {}
14451 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
14456 virtual void Advance() {
14459 if (current6_ == end6_) {
14460 current6_ = begin6_;
14463 if (current5_ == end5_) {
14464 current5_ = begin5_;
14467 if (current4_ == end4_) {
14468 current4_ = begin4_;
14471 if (current3_ == end3_) {
14472 current3_ = begin3_;
14475 if (current2_ == end2_) {
14476 current2_ = begin2_;
14479 ComputeCurrentValue();
14481 virtual ParamIteratorInterface<ParamType>* Clone()
const {
14482 return new Iterator(*
this);
14484 virtual const ParamType* Current()
const {
return ¤t_value_; }
14485 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
14488 GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
14489 <<
"The program attempted to compare iterators "
14490 <<
"from different generators." << std::endl;
14491 const Iterator* typed_other =
14492 CheckedDowncastToActualType<const Iterator>(&other);
14496 return (AtEnd() && typed_other->AtEnd()) ||
14498 current1_ == typed_other->current1_ &&
14499 current2_ == typed_other->current2_ &&
14500 current3_ == typed_other->current3_ &&
14501 current4_ == typed_other->current4_ &&
14502 current5_ == typed_other->current5_ &&
14503 current6_ == typed_other->current6_);
14507 Iterator(
const Iterator& other)
14508 : base_(other.base_),
14509 begin1_(other.begin1_),
14510 end1_(other.end1_),
14511 current1_(other.current1_),
14512 begin2_(other.begin2_),
14513 end2_(other.end2_),
14514 current2_(other.current2_),
14515 begin3_(other.begin3_),
14516 end3_(other.end3_),
14517 current3_(other.current3_),
14518 begin4_(other.begin4_),
14519 end4_(other.end4_),
14520 current4_(other.current4_),
14521 begin5_(other.begin5_),
14522 end5_(other.end5_),
14523 current5_(other.current5_),
14524 begin6_(other.begin6_),
14525 end6_(other.end6_),
14526 current6_(other.current6_) {
14527 ComputeCurrentValue();
14530 void ComputeCurrentValue() {
14532 current_value_ = ParamType(*current1_, *current2_, *current3_,
14533 *current4_, *current5_, *current6_);
14535 bool AtEnd()
const {
14539 current1_ == end1_ ||
14540 current2_ == end2_ ||
14541 current3_ == end3_ ||
14542 current4_ == end4_ ||
14543 current5_ == end5_ ||
14544 current6_ == end6_;
14548 void operator=(
const Iterator& other);
14550 const ParamGeneratorInterface<ParamType>*
const base_;
14571 ParamType current_value_;
14575 void operator=(
const CartesianProductGenerator6& other);
14577 const ParamGenerator<T1> g1_;
14578 const ParamGenerator<T2> g2_;
14579 const ParamGenerator<T3> g3_;
14580 const ParamGenerator<T4> g4_;
14581 const ParamGenerator<T5> g5_;
14582 const ParamGenerator<T6> g6_;
14586template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
14587 typename T6,
typename T7>
14592 typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7>
ParamType;
14598 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
14602 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
14603 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
14607 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
14608 g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end());
14630 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
14631 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2),
14632 begin3_(g3.begin()), end3_(g3.
end()), current3_(current3),
14633 begin4_(g4.begin()), end4_(g4.
end()), current4_(current4),
14634 begin5_(g5.begin()), end5_(g5.
end()), current5_(current5),
14635 begin6_(g6.begin()), end6_(g6.
end()), current6_(current6),
14636 begin7_(g7.begin()), end7_(g7.
end()), current7_(current7) {
14637 ComputeCurrentValue();
14639 virtual ~Iterator() {}
14641 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
14646 virtual void Advance() {
14649 if (current7_ == end7_) {
14650 current7_ = begin7_;
14653 if (current6_ == end6_) {
14654 current6_ = begin6_;
14657 if (current5_ == end5_) {
14658 current5_ = begin5_;
14661 if (current4_ == end4_) {
14662 current4_ = begin4_;
14665 if (current3_ == end3_) {
14666 current3_ = begin3_;
14669 if (current2_ == end2_) {
14670 current2_ = begin2_;
14673 ComputeCurrentValue();
14675 virtual ParamIteratorInterface<ParamType>* Clone()
const {
14676 return new Iterator(*
this);
14678 virtual const ParamType* Current()
const {
return ¤t_value_; }
14679 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
14682 GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
14683 <<
"The program attempted to compare iterators "
14684 <<
"from different generators." << std::endl;
14685 const Iterator* typed_other =
14686 CheckedDowncastToActualType<const Iterator>(&other);
14690 return (AtEnd() && typed_other->AtEnd()) ||
14692 current1_ == typed_other->current1_ &&
14693 current2_ == typed_other->current2_ &&
14694 current3_ == typed_other->current3_ &&
14695 current4_ == typed_other->current4_ &&
14696 current5_ == typed_other->current5_ &&
14697 current6_ == typed_other->current6_ &&
14698 current7_ == typed_other->current7_);
14702 Iterator(
const Iterator& other)
14703 : base_(other.base_),
14704 begin1_(other.begin1_),
14705 end1_(other.end1_),
14706 current1_(other.current1_),
14707 begin2_(other.begin2_),
14708 end2_(other.end2_),
14709 current2_(other.current2_),
14710 begin3_(other.begin3_),
14711 end3_(other.end3_),
14712 current3_(other.current3_),
14713 begin4_(other.begin4_),
14714 end4_(other.end4_),
14715 current4_(other.current4_),
14716 begin5_(other.begin5_),
14717 end5_(other.end5_),
14718 current5_(other.current5_),
14719 begin6_(other.begin6_),
14720 end6_(other.end6_),
14721 current6_(other.current6_),
14722 begin7_(other.begin7_),
14723 end7_(other.end7_),
14724 current7_(other.current7_) {
14725 ComputeCurrentValue();
14728 void ComputeCurrentValue() {
14730 current_value_ = ParamType(*current1_, *current2_, *current3_,
14731 *current4_, *current5_, *current6_, *current7_);
14733 bool AtEnd()
const {
14737 current1_ == end1_ ||
14738 current2_ == end2_ ||
14739 current3_ == end3_ ||
14740 current4_ == end4_ ||
14741 current5_ == end5_ ||
14742 current6_ == end6_ ||
14743 current7_ == end7_;
14747 void operator=(
const Iterator& other);
14749 const ParamGeneratorInterface<ParamType>*
const base_;
14773 ParamType current_value_;
14777 void operator=(
const CartesianProductGenerator7& other);
14779 const ParamGenerator<T1> g1_;
14780 const ParamGenerator<T2> g2_;
14781 const ParamGenerator<T3> g3_;
14782 const ParamGenerator<T4> g4_;
14783 const ParamGenerator<T5> g5_;
14784 const ParamGenerator<T6> g6_;
14785 const ParamGenerator<T7> g7_;
14789template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
14790 typename T6,
typename T7,
typename T8>
14795 typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8>
ParamType;
14802 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
14807 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
14808 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
14809 g7_.begin(), g8_, g8_.begin());
14812 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
14813 g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
14838 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
14839 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2),
14840 begin3_(g3.begin()), end3_(g3.
end()), current3_(current3),
14841 begin4_(g4.begin()), end4_(g4.
end()), current4_(current4),
14842 begin5_(g5.begin()), end5_(g5.
end()), current5_(current5),
14843 begin6_(g6.begin()), end6_(g6.
end()), current6_(current6),
14844 begin7_(g7.begin()), end7_(g7.
end()), current7_(current7),
14845 begin8_(g8.begin()), end8_(g8.
end()), current8_(current8) {
14846 ComputeCurrentValue();
14848 virtual ~Iterator() {}
14850 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
14855 virtual void Advance() {
14858 if (current8_ == end8_) {
14859 current8_ = begin8_;
14862 if (current7_ == end7_) {
14863 current7_ = begin7_;
14866 if (current6_ == end6_) {
14867 current6_ = begin6_;
14870 if (current5_ == end5_) {
14871 current5_ = begin5_;
14874 if (current4_ == end4_) {
14875 current4_ = begin4_;
14878 if (current3_ == end3_) {
14879 current3_ = begin3_;
14882 if (current2_ == end2_) {
14883 current2_ = begin2_;
14886 ComputeCurrentValue();
14888 virtual ParamIteratorInterface<ParamType>* Clone()
const {
14889 return new Iterator(*
this);
14891 virtual const ParamType* Current()
const {
return ¤t_value_; }
14892 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
14895 GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
14896 <<
"The program attempted to compare iterators "
14897 <<
"from different generators." << std::endl;
14898 const Iterator* typed_other =
14899 CheckedDowncastToActualType<const Iterator>(&other);
14903 return (AtEnd() && typed_other->AtEnd()) ||
14905 current1_ == typed_other->current1_ &&
14906 current2_ == typed_other->current2_ &&
14907 current3_ == typed_other->current3_ &&
14908 current4_ == typed_other->current4_ &&
14909 current5_ == typed_other->current5_ &&
14910 current6_ == typed_other->current6_ &&
14911 current7_ == typed_other->current7_ &&
14912 current8_ == typed_other->current8_);
14916 Iterator(
const Iterator& other)
14917 : base_(other.base_),
14918 begin1_(other.begin1_),
14919 end1_(other.end1_),
14920 current1_(other.current1_),
14921 begin2_(other.begin2_),
14922 end2_(other.end2_),
14923 current2_(other.current2_),
14924 begin3_(other.begin3_),
14925 end3_(other.end3_),
14926 current3_(other.current3_),
14927 begin4_(other.begin4_),
14928 end4_(other.end4_),
14929 current4_(other.current4_),
14930 begin5_(other.begin5_),
14931 end5_(other.end5_),
14932 current5_(other.current5_),
14933 begin6_(other.begin6_),
14934 end6_(other.end6_),
14935 current6_(other.current6_),
14936 begin7_(other.begin7_),
14937 end7_(other.end7_),
14938 current7_(other.current7_),
14939 begin8_(other.begin8_),
14940 end8_(other.end8_),
14941 current8_(other.current8_) {
14942 ComputeCurrentValue();
14945 void ComputeCurrentValue() {
14947 current_value_ = ParamType(*current1_, *current2_, *current3_,
14948 *current4_, *current5_, *current6_, *current7_, *current8_);
14950 bool AtEnd()
const {
14954 current1_ == end1_ ||
14955 current2_ == end2_ ||
14956 current3_ == end3_ ||
14957 current4_ == end4_ ||
14958 current5_ == end5_ ||
14959 current6_ == end6_ ||
14960 current7_ == end7_ ||
14961 current8_ == end8_;
14965 void operator=(
const Iterator& other);
14967 const ParamGeneratorInterface<ParamType>*
const base_;
14994 ParamType current_value_;
14998 void operator=(
const CartesianProductGenerator8& other);
15000 const ParamGenerator<T1> g1_;
15001 const ParamGenerator<T2> g2_;
15002 const ParamGenerator<T3> g3_;
15003 const ParamGenerator<T4> g4_;
15004 const ParamGenerator<T5> g5_;
15005 const ParamGenerator<T6> g6_;
15006 const ParamGenerator<T7> g7_;
15007 const ParamGenerator<T8> g8_;
15011template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
15012 typename T6,
typename T7,
typename T8,
typename T9>
15017 typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>
ParamType;
15024 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
15029 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
15030 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
15031 g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin());
15034 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
15035 g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
15036 g8_.end(), g9_, g9_.end());
15062 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
15063 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2),
15064 begin3_(g3.begin()), end3_(g3.
end()), current3_(current3),
15065 begin4_(g4.begin()), end4_(g4.
end()), current4_(current4),
15066 begin5_(g5.begin()), end5_(g5.
end()), current5_(current5),
15067 begin6_(g6.begin()), end6_(g6.
end()), current6_(current6),
15068 begin7_(g7.begin()), end7_(g7.
end()), current7_(current7),
15069 begin8_(g8.begin()), end8_(g8.
end()), current8_(current8),
15070 begin9_(g9.begin()), end9_(g9.
end()), current9_(current9) {
15071 ComputeCurrentValue();
15073 virtual ~Iterator() {}
15075 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
15080 virtual void Advance() {
15083 if (current9_ == end9_) {
15084 current9_ = begin9_;
15087 if (current8_ == end8_) {
15088 current8_ = begin8_;
15091 if (current7_ == end7_) {
15092 current7_ = begin7_;
15095 if (current6_ == end6_) {
15096 current6_ = begin6_;
15099 if (current5_ == end5_) {
15100 current5_ = begin5_;
15103 if (current4_ == end4_) {
15104 current4_ = begin4_;
15107 if (current3_ == end3_) {
15108 current3_ = begin3_;
15111 if (current2_ == end2_) {
15112 current2_ = begin2_;
15115 ComputeCurrentValue();
15117 virtual ParamIteratorInterface<ParamType>* Clone()
const {
15118 return new Iterator(*
this);
15120 virtual const ParamType* Current()
const {
return ¤t_value_; }
15121 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
15124 GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
15125 <<
"The program attempted to compare iterators "
15126 <<
"from different generators." << std::endl;
15127 const Iterator* typed_other =
15128 CheckedDowncastToActualType<const Iterator>(&other);
15132 return (AtEnd() && typed_other->AtEnd()) ||
15134 current1_ == typed_other->current1_ &&
15135 current2_ == typed_other->current2_ &&
15136 current3_ == typed_other->current3_ &&
15137 current4_ == typed_other->current4_ &&
15138 current5_ == typed_other->current5_ &&
15139 current6_ == typed_other->current6_ &&
15140 current7_ == typed_other->current7_ &&
15141 current8_ == typed_other->current8_ &&
15142 current9_ == typed_other->current9_);
15146 Iterator(
const Iterator& other)
15147 : base_(other.base_),
15148 begin1_(other.begin1_),
15149 end1_(other.end1_),
15150 current1_(other.current1_),
15151 begin2_(other.begin2_),
15152 end2_(other.end2_),
15153 current2_(other.current2_),
15154 begin3_(other.begin3_),
15155 end3_(other.end3_),
15156 current3_(other.current3_),
15157 begin4_(other.begin4_),
15158 end4_(other.end4_),
15159 current4_(other.current4_),
15160 begin5_(other.begin5_),
15161 end5_(other.end5_),
15162 current5_(other.current5_),
15163 begin6_(other.begin6_),
15164 end6_(other.end6_),
15165 current6_(other.current6_),
15166 begin7_(other.begin7_),
15167 end7_(other.end7_),
15168 current7_(other.current7_),
15169 begin8_(other.begin8_),
15170 end8_(other.end8_),
15171 current8_(other.current8_),
15172 begin9_(other.begin9_),
15173 end9_(other.end9_),
15174 current9_(other.current9_) {
15175 ComputeCurrentValue();
15178 void ComputeCurrentValue() {
15180 current_value_ = ParamType(*current1_, *current2_, *current3_,
15181 *current4_, *current5_, *current6_, *current7_, *current8_,
15184 bool AtEnd()
const {
15188 current1_ == end1_ ||
15189 current2_ == end2_ ||
15190 current3_ == end3_ ||
15191 current4_ == end4_ ||
15192 current5_ == end5_ ||
15193 current6_ == end6_ ||
15194 current7_ == end7_ ||
15195 current8_ == end8_ ||
15196 current9_ == end9_;
15200 void operator=(
const Iterator& other);
15202 const ParamGeneratorInterface<ParamType>*
const base_;
15232 ParamType current_value_;
15236 void operator=(
const CartesianProductGenerator9& other);
15238 const ParamGenerator<T1> g1_;
15239 const ParamGenerator<T2> g2_;
15240 const ParamGenerator<T3> g3_;
15241 const ParamGenerator<T4> g4_;
15242 const ParamGenerator<T5> g5_;
15243 const ParamGenerator<T6> g6_;
15244 const ParamGenerator<T7> g7_;
15245 const ParamGenerator<T8> g8_;
15246 const ParamGenerator<T9> g9_;
15250template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
15251 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
15254 T7, T8, T9, T10> > {
15256 typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
ParamType;
15264 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
15265 g9_(g9), g10_(g10) {}
15269 return new Iterator(
this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
15270 g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
15271 g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin());
15274 return new Iterator(
this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
15275 g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
15276 g8_.end(), g9_, g9_.end(), g10_, g10_.end());
15304 begin1_(g1.begin()), end1_(g1.
end()), current1_(current1),
15305 begin2_(g2.begin()), end2_(g2.
end()), current2_(current2),
15306 begin3_(g3.begin()), end3_(g3.
end()), current3_(current3),
15307 begin4_(g4.begin()), end4_(g4.
end()), current4_(current4),
15308 begin5_(g5.begin()), end5_(g5.
end()), current5_(current5),
15309 begin6_(g6.begin()), end6_(g6.
end()), current6_(current6),
15310 begin7_(g7.begin()), end7_(g7.
end()), current7_(current7),
15311 begin8_(g8.begin()), end8_(g8.
end()), current8_(current8),
15312 begin9_(g9.begin()), end9_(g9.
end()), current9_(current9),
15313 begin10_(g10.begin()), end10_(g10.
end()), current10_(current10) {
15314 ComputeCurrentValue();
15316 virtual ~Iterator() {}
15318 virtual const ParamGeneratorInterface<ParamType>* BaseGenerator()
const {
15323 virtual void Advance() {
15326 if (current10_ == end10_) {
15327 current10_ = begin10_;
15330 if (current9_ == end9_) {
15331 current9_ = begin9_;
15334 if (current8_ == end8_) {
15335 current8_ = begin8_;
15338 if (current7_ == end7_) {
15339 current7_ = begin7_;
15342 if (current6_ == end6_) {
15343 current6_ = begin6_;
15346 if (current5_ == end5_) {
15347 current5_ = begin5_;
15350 if (current4_ == end4_) {
15351 current4_ = begin4_;
15354 if (current3_ == end3_) {
15355 current3_ = begin3_;
15358 if (current2_ == end2_) {
15359 current2_ = begin2_;
15362 ComputeCurrentValue();
15364 virtual ParamIteratorInterface<ParamType>* Clone()
const {
15365 return new Iterator(*
this);
15367 virtual const ParamType* Current()
const {
return ¤t_value_; }
15368 virtual bool Equals(
const ParamIteratorInterface<ParamType>& other)
const {
15371 GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
15372 <<
"The program attempted to compare iterators "
15373 <<
"from different generators." << std::endl;
15374 const Iterator* typed_other =
15375 CheckedDowncastToActualType<const Iterator>(&other);
15379 return (AtEnd() && typed_other->AtEnd()) ||
15381 current1_ == typed_other->current1_ &&
15382 current2_ == typed_other->current2_ &&
15383 current3_ == typed_other->current3_ &&
15384 current4_ == typed_other->current4_ &&
15385 current5_ == typed_other->current5_ &&
15386 current6_ == typed_other->current6_ &&
15387 current7_ == typed_other->current7_ &&
15388 current8_ == typed_other->current8_ &&
15389 current9_ == typed_other->current9_ &&
15390 current10_ == typed_other->current10_);
15394 Iterator(
const Iterator& other)
15395 : base_(other.base_),
15396 begin1_(other.begin1_),
15397 end1_(other.end1_),
15398 current1_(other.current1_),
15399 begin2_(other.begin2_),
15400 end2_(other.end2_),
15401 current2_(other.current2_),
15402 begin3_(other.begin3_),
15403 end3_(other.end3_),
15404 current3_(other.current3_),
15405 begin4_(other.begin4_),
15406 end4_(other.end4_),
15407 current4_(other.current4_),
15408 begin5_(other.begin5_),
15409 end5_(other.end5_),
15410 current5_(other.current5_),
15411 begin6_(other.begin6_),
15412 end6_(other.end6_),
15413 current6_(other.current6_),
15414 begin7_(other.begin7_),
15415 end7_(other.end7_),
15416 current7_(other.current7_),
15417 begin8_(other.begin8_),
15418 end8_(other.end8_),
15419 current8_(other.current8_),
15420 begin9_(other.begin9_),
15421 end9_(other.end9_),
15422 current9_(other.current9_),
15423 begin10_(other.begin10_),
15424 end10_(other.end10_),
15425 current10_(other.current10_) {
15426 ComputeCurrentValue();
15429 void ComputeCurrentValue() {
15431 current_value_ = ParamType(*current1_, *current2_, *current3_,
15432 *current4_, *current5_, *current6_, *current7_, *current8_,
15433 *current9_, *current10_);
15435 bool AtEnd()
const {
15439 current1_ == end1_ ||
15440 current2_ == end2_ ||
15441 current3_ == end3_ ||
15442 current4_ == end4_ ||
15443 current5_ == end5_ ||
15444 current6_ == end6_ ||
15445 current7_ == end7_ ||
15446 current8_ == end8_ ||
15447 current9_ == end9_ ||
15448 current10_ == end10_;
15452 void operator=(
const Iterator& other);
15454 const ParamGeneratorInterface<ParamType>*
const base_;
15487 ParamType current_value_;
15491 void operator=(
const CartesianProductGenerator10& other);
15493 const ParamGenerator<T1> g1_;
15494 const ParamGenerator<T2> g2_;
15495 const ParamGenerator<T3> g3_;
15496 const ParamGenerator<T4> g4_;
15497 const ParamGenerator<T5> g5_;
15498 const ParamGenerator<T6> g6_;
15499 const ParamGenerator<T7> g7_;
15500 const ParamGenerator<T8> g8_;
15501 const ParamGenerator<T9> g9_;
15502 const ParamGenerator<T10> g10_;
15512template <
class Generator1,
class Generator2>
15516 : g1_(g1), g2_(g2) {}
15517 template <
typename T1,
typename T2>
15529 const Generator1 g1_;
15530 const Generator2 g2_;
15533template <
class Generator1,
class Generator2,
class Generator3>
15537 const Generator3& g3)
15538 : g1_(g1), g2_(g2), g3_(g3) {}
15539 template <
typename T1,
typename T2,
typename T3>
15552 const Generator1 g1_;
15553 const Generator2 g2_;
15554 const Generator3 g3_;
15557template <
class Generator1,
class Generator2,
class Generator3,
15562 const Generator3& g3,
const Generator4& g4)
15563 : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
15564 template <
typename T1,
typename T2,
typename T3,
typename T4>
15578 const Generator1 g1_;
15579 const Generator2 g2_;
15580 const Generator3 g3_;
15581 const Generator4 g4_;
15584template <
class Generator1,
class Generator2,
class Generator3,
15585 class Generator4,
class Generator5>
15589 const Generator3& g3,
const Generator4& g4,
const Generator5& g5)
15590 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
15591 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
15606 const Generator1 g1_;
15607 const Generator2 g2_;
15608 const Generator3 g3_;
15609 const Generator4 g4_;
15610 const Generator5 g5_;
15613template <
class Generator1,
class Generator2,
class Generator3,
15614 class Generator4,
class Generator5,
class Generator6>
15618 const Generator3& g3,
const Generator4& g4,
const Generator5& g5,
15619 const Generator6& g6)
15620 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
15621 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
15638 const Generator1 g1_;
15639 const Generator2 g2_;
15640 const Generator3 g3_;
15641 const Generator4 g4_;
15642 const Generator5 g5_;
15643 const Generator6 g6_;
15646template <
class Generator1,
class Generator2,
class Generator3,
15647 class Generator4,
class Generator5,
class Generator6,
class Generator7>
15651 const Generator3& g3,
const Generator4& g4,
const Generator5& g5,
15652 const Generator6& g6,
const Generator7& g7)
15653 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
15654 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
15655 typename T6,
typename T7>
15673 const Generator1 g1_;
15674 const Generator2 g2_;
15675 const Generator3 g3_;
15676 const Generator4 g4_;
15677 const Generator5 g5_;
15678 const Generator6 g6_;
15679 const Generator7 g7_;
15682template <
class Generator1,
class Generator2,
class Generator3,
15683 class Generator4,
class Generator5,
class Generator6,
class Generator7,
15688 const Generator3& g3,
const Generator4& g4,
const Generator5& g5,
15689 const Generator6& g6,
const Generator7& g7,
const Generator8& g8)
15690 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
15692 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
15693 typename T6,
typename T7,
typename T8>
15712 const Generator1 g1_;
15713 const Generator2 g2_;
15714 const Generator3 g3_;
15715 const Generator4 g4_;
15716 const Generator5 g5_;
15717 const Generator6 g6_;
15718 const Generator7 g7_;
15719 const Generator8 g8_;
15722template <
class Generator1,
class Generator2,
class Generator3,
15723 class Generator4,
class Generator5,
class Generator6,
class Generator7,
15724 class Generator8,
class Generator9>
15728 const Generator3& g3,
const Generator4& g4,
const Generator5& g5,
15729 const Generator6& g6,
const Generator7& g7,
const Generator8& g8,
15730 const Generator9& g9)
15731 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
15733 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
15734 typename T6,
typename T7,
typename T8,
typename T9>
15755 const Generator1 g1_;
15756 const Generator2 g2_;
15757 const Generator3 g3_;
15758 const Generator4 g4_;
15759 const Generator5 g5_;
15760 const Generator6 g6_;
15761 const Generator7 g7_;
15762 const Generator8 g8_;
15763 const Generator9 g9_;
15766template <
class Generator1,
class Generator2,
class Generator3,
15767 class Generator4,
class Generator5,
class Generator6,
class Generator7,
15768 class Generator8,
class Generator9,
class Generator10>
15772 const Generator3& g3,
const Generator4& g4,
const Generator5& g5,
15773 const Generator6& g6,
const Generator7& g7,
const Generator8& g8,
15774 const Generator9& g9,
const Generator10& g10)
15775 : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
15776 g9_(g9), g10_(g10) {}
15777 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
15778 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
15780 T9, T10> >()
const {
15801 const Generator1 g1_;
15802 const Generator2 g2_;
15803 const Generator3 g3_;
15804 const Generator4 g4_;
15805 const Generator5 g5_;
15806 const Generator6 g6_;
15807 const Generator7 g7_;
15808 const Generator8 g8_;
15809 const Generator9 g9_;
15810 const Generator10 g10_;
15822#if GTEST_HAS_PARAM_TEST
15868template <
typename T,
typename IncrementT>
15874template <
typename T>
15934template <
typename ForwardIterator>
15935internal::ParamGenerator<
15936 typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
15938 typedef typename ::testing::internal::IteratorTraits<ForwardIterator>
15939 ::value_type ParamType;
15944template <
typename T,
size_t N>
15946 return ValuesIn(array, array + N);
15949template <
class Container>
15951 const Container& container) {
15952 return ValuesIn(container.begin(), container.end());
15974template <
typename T1>
15979template <
typename T1,
typename T2>
15984template <
typename T1,
typename T2,
typename T3>
15989template <
typename T1,
typename T2,
typename T3,
typename T4>
15994template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
16000template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16003 T4 v4, T5 v5, T6 v6) {
16004 return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6);
16007template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16008 typename T6,
typename T7>
16010 T4 v4, T5 v5, T6 v6, T7 v7) {
16011 return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5,
16015template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16016 typename T6,
typename T7,
typename T8>
16018 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) {
16019 return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4,
16023template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16024 typename T6,
typename T7,
typename T8,
typename T9>
16025internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2,
16026 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) {
16027 return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3,
16028 v4, v5, v6, v7, v8, v9);
16031template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16032 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
16033internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1,
16034 T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) {
16035 return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1,
16036 v2, v3, v4, v5, v6, v7, v8, v9, v10);
16039template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16040 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16042internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
16043 T11>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
16044 T10 v10, T11 v11) {
16045 return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
16046 T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11);
16049template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16050 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16051 typename T11,
typename T12>
16052internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16053 T12>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
16054 T10 v10, T11 v11, T12 v12) {
16055 return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16056 T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12);
16059template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16060 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16061 typename T11,
typename T12,
typename T13>
16062internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
16063 T13>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
16064 T10 v10, T11 v11, T12 v12, T13 v13) {
16065 return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16066 T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13);
16069template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16070 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16071 typename T11,
typename T12,
typename T13,
typename T14>
16072internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16073 T14>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
16074 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) {
16075 return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16076 T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
16080template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16081 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16082 typename T11,
typename T12,
typename T13,
typename T14,
typename T15>
16083internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16084 T14, T15>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
16085 T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) {
16086 return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16087 T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
16091template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16092 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16093 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16095internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16096 T14, T15, T16>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
16097 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
16099 return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16100 T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
16101 v12, v13, v14, v15, v16);
16104template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16105 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16106 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16107 typename T16,
typename T17>
16108internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16109 T14, T15, T16, T17>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
16110 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
16111 T16 v16, T17 v17) {
16112 return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16113 T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
16114 v11, v12, v13, v14, v15, v16, v17);
16117template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16118 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16119 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16120 typename T16,
typename T17,
typename T18>
16121internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16122 T14, T15, T16, T17, T18>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
16123 T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
16124 T16 v16, T17 v17, T18 v18) {
16125 return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16126 T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
16127 v10, v11, v12, v13, v14, v15, v16, v17, v18);
16130template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16131 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16132 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16133 typename T16,
typename T17,
typename T18,
typename T19>
16134internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16135 T14, T15, T16, T17, T18, T19>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
16136 T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
16137 T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) {
16138 return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16139 T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8,
16140 v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19);
16143template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16144 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16145 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16146 typename T16,
typename T17,
typename T18,
typename T19,
typename T20>
16147internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16148 T14, T15, T16, T17, T18, T19, T20>
Values(T1 v1, T2 v2, T3 v3, T4 v4,
16149 T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
16150 T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) {
16151 return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16152 T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7,
16153 v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20);
16156template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16157 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16158 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16159 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16161internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16162 T14, T15, T16, T17, T18, T19, T20, T21>
Values(T1 v1, T2 v2, T3 v3, T4 v4,
16163 T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
16164 T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) {
16165 return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16166 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6,
16167 v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21);
16170template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16171 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16172 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16173 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16174 typename T21,
typename T22>
16175internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16176 T14, T15, T16, T17, T18, T19, T20, T21, T22>
Values(T1 v1, T2 v2, T3 v3,
16177 T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
16178 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
16179 T21 v21, T22 v22) {
16180 return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16181 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4,
16182 v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
16186template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16187 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16188 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16189 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16190 typename T21,
typename T22,
typename T23>
16191internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16192 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>
Values(T1 v1, T2 v2,
16193 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
16194 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
16195 T21 v21, T22 v22, T23 v23) {
16196 return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16197 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3,
16198 v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
16199 v20, v21, v22, v23);
16202template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16203 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16204 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16205 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16206 typename T21,
typename T22,
typename T23,
typename T24>
16207internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16208 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>
Values(T1 v1, T2 v2,
16209 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
16210 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
16211 T21 v21, T22 v22, T23 v23, T24 v24) {
16212 return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16213 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2,
16214 v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
16215 v19, v20, v21, v22, v23, v24);
16218template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16219 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16220 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16221 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16222 typename T21,
typename T22,
typename T23,
typename T24,
typename T25>
16223internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16224 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>
Values(T1 v1,
16225 T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
16226 T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
16227 T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) {
16228 return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16229 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1,
16230 v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
16231 v18, v19, v20, v21, v22, v23, v24, v25);
16234template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16235 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16236 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16237 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16238 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16240internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16241 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16242 T26>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
16243 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
16244 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
16246 return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16247 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16248 T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
16249 v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26);
16252template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16253 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16254 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16255 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16256 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16257 typename T26,
typename T27>
16258internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16259 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
16260 T27>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
16261 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
16262 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
16263 T26 v26, T27 v27) {
16264 return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16265 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16266 T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
16267 v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27);
16270template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16271 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16272 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16273 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16274 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16275 typename T26,
typename T27,
typename T28>
16276internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16277 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
16278 T28>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
16279 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
16280 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
16281 T26 v26, T27 v27, T28 v28) {
16282 return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16283 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16284 T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
16285 v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
16289template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16290 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16291 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16292 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16293 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16294 typename T26,
typename T27,
typename T28,
typename T29>
16295internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16296 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16297 T29>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
16298 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
16299 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
16300 T26 v26, T27 v27, T28 v28, T29 v29) {
16301 return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16302 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16303 T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
16304 v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
16308template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16309 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16310 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16311 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16312 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16313 typename T26,
typename T27,
typename T28,
typename T29,
typename T30>
16314internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16315 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16316 T29, T30>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
16317 T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
16318 T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
16319 T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) {
16320 return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16321 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16322 T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
16323 v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
16324 v26, v27, v28, v29, v30);
16327template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16328 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16329 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16330 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16331 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16332 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16334internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16335 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16336 T29, T30, T31>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
16337 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
16338 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
16339 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) {
16340 return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16341 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16342 T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
16343 v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
16344 v25, v26, v27, v28, v29, v30, v31);
16347template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16348 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16349 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16350 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16351 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16352 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16353 typename T31,
typename T32>
16354internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16355 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16356 T29, T30, T31, T32>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
16357 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
16358 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
16359 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
16361 return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16362 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16363 T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
16364 v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
16365 v24, v25, v26, v27, v28, v29, v30, v31, v32);
16368template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16369 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16370 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16371 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16372 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16373 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16374 typename T31,
typename T32,
typename T33>
16375internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16376 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16377 T29, T30, T31, T32, T33>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
16378 T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
16379 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
16380 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
16381 T32 v32, T33 v33) {
16382 return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16383 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16384 T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8,
16385 v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
16386 v24, v25, v26, v27, v28, v29, v30, v31, v32, v33);
16389template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16390 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16391 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16392 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16393 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16394 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16395 typename T31,
typename T32,
typename T33,
typename T34>
16396internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16397 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16398 T29, T30, T31, T32, T33, T34>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
16399 T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
16400 T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,
16401 T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,
16402 T31 v31, T32 v32, T33 v33, T34 v34) {
16403 return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16404 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16405 T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7,
16406 v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
16407 v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34);
16410template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16411 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16412 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16413 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16414 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16415 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16416 typename T31,
typename T32,
typename T33,
typename T34,
typename T35>
16417internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16418 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16419 T29, T30, T31, T32, T33, T34, T35>
Values(T1 v1, T2 v2, T3 v3, T4 v4,
16420 T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
16421 T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
16422 T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
16423 T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) {
16424 return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16425 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16426 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6,
16427 v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
16428 v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35);
16431template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16432 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16433 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16434 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16435 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16436 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16437 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
16439internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16440 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16441 T29, T30, T31, T32, T33, T34, T35, T36>
Values(T1 v1, T2 v2, T3 v3, T4 v4,
16442 T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
16443 T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
16444 T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
16445 T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) {
16446 return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16447 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16448 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4,
16449 v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
16450 v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
16454template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16455 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16456 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16457 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16458 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16459 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16460 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
16461 typename T36,
typename T37>
16462internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16463 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16464 T29, T30, T31, T32, T33, T34, T35, T36, T37>
Values(T1 v1, T2 v2, T3 v3,
16465 T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
16466 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
16467 T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
16468 T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
16470 return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16471 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16472 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3,
16473 v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
16474 v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
16475 v34, v35, v36, v37);
16478template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16479 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16480 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16481 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16482 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16483 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16484 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
16485 typename T36,
typename T37,
typename T38>
16486internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16487 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16488 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>
Values(T1 v1, T2 v2,
16489 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
16490 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
16491 T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
16492 T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
16493 T37 v37, T38 v38) {
16494 return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16495 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16496 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2,
16497 v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
16498 v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32,
16499 v33, v34, v35, v36, v37, v38);
16502template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16503 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16504 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16505 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16506 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16507 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16508 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
16509 typename T36,
typename T37,
typename T38,
typename T39>
16510internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16511 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16512 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>
Values(T1 v1, T2 v2,
16513 T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
16514 T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
16515 T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
16516 T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
16517 T37 v37, T38 v38, T39 v39) {
16518 return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16519 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16520 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1,
16521 v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
16522 v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31,
16523 v32, v33, v34, v35, v36, v37, v38, v39);
16526template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16527 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16528 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16529 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16530 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16531 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16532 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
16533 typename T36,
typename T37,
typename T38,
typename T39,
typename T40>
16534internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16535 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16536 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40>
Values(T1 v1,
16537 T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
16538 T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
16539 T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27,
16540 T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35,
16541 T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) {
16542 return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16543 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16544 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
16545 T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
16546 v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29,
16547 v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40);
16550template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16551 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16552 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16553 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16554 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16555 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16556 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
16557 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
16559internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16560 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16561 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
16562 T41>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
16563 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
16564 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
16565 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
16566 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) {
16567 return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16568 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16569 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
16570 T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
16571 v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28,
16572 v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41);
16575template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16576 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16577 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16578 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16579 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16580 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16581 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
16582 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
16583 typename T41,
typename T42>
16584internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16585 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16586 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
16587 T42>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
16588 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
16589 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
16590 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
16591 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
16593 return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16594 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16595 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
16596 T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
16597 v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
16598 v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41,
16602template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16603 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16604 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16605 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16606 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16607 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16608 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
16609 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
16610 typename T41,
typename T42,
typename T43>
16611internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16612 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16613 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
16614 T43>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
16615 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
16616 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
16617 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
16618 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
16619 T42 v42, T43 v43) {
16620 return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16621 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16622 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
16623 T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
16624 v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
16625 v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40,
16629template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16630 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16631 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16632 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16633 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16634 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16635 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
16636 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
16637 typename T41,
typename T42,
typename T43,
typename T44>
16638internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16639 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16640 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
16641 T44>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
16642 T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
16643 T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
16644 T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
16645 T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
16646 T42 v42, T43 v43, T44 v44) {
16647 return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16648 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16649 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
16650 T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
16651 v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
16652 v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39,
16653 v40, v41, v42, v43, v44);
16656template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16657 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16658 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16659 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16660 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16661 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16662 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
16663 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
16664 typename T41,
typename T42,
typename T43,
typename T44,
typename T45>
16665internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16666 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16667 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
16668 T44, T45>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
16669 T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
16670 T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
16671 T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,
16672 T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,
16673 T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) {
16674 return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16675 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16676 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
16677 T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
16678 v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
16679 v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38,
16680 v39, v40, v41, v42, v43, v44, v45);
16683template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16684 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16685 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16686 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16687 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16688 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16689 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
16690 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
16691 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
16693internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16694 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16695 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
16696 T44, T45, T46>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
16697 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
16698 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
16699 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
16700 T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
16701 T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) {
16702 return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16703 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16704 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
16705 T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
16706 v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
16707 v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
16708 v38, v39, v40, v41, v42, v43, v44, v45, v46);
16711template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16712 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16713 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16714 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16715 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16716 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16717 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
16718 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
16719 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
16720 typename T46,
typename T47>
16721internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16722 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16723 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
16724 T44, T45, T46, T47>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
16725 T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
16726 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
16727 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
16728 T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
16729 T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) {
16730 return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16731 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16732 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
16733 T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8,
16734 v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
16735 v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
16736 v38, v39, v40, v41, v42, v43, v44, v45, v46, v47);
16739template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16740 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16741 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16742 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16743 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16744 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16745 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
16746 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
16747 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
16748 typename T46,
typename T47,
typename T48>
16749internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16750 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16751 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
16752 T44, T45, T46, T47, T48>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
16753 T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
16754 T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
16755 T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
16756 T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
16757 T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47,
16759 return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16760 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16761 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
16762 T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7,
16763 v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
16764 v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36,
16765 v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48);
16768template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16769 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16770 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16771 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16772 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16773 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16774 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
16775 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
16776 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
16777 typename T46,
typename T47,
typename T48,
typename T49>
16778internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16779 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16780 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
16781 T44, T45, T46, T47, T48, T49>
Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
16782 T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
16783 T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,
16784 T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,
16785 T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38,
16786 T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46,
16787 T47 v47, T48 v48, T49 v49) {
16788 return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16789 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16790 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
16791 T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6,
16792 v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
16793 v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35,
16794 v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49);
16797template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
16798 typename T6,
typename T7,
typename T8,
typename T9,
typename T10,
16799 typename T11,
typename T12,
typename T13,
typename T14,
typename T15,
16800 typename T16,
typename T17,
typename T18,
typename T19,
typename T20,
16801 typename T21,
typename T22,
typename T23,
typename T24,
typename T25,
16802 typename T26,
typename T27,
typename T28,
typename T29,
typename T30,
16803 typename T31,
typename T32,
typename T33,
typename T34,
typename T35,
16804 typename T36,
typename T37,
typename T38,
typename T39,
typename T40,
16805 typename T41,
typename T42,
typename T43,
typename T44,
typename T45,
16806 typename T46,
typename T47,
typename T48,
typename T49,
typename T50>
16807internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
16808 T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
16809 T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
16810 T44, T45, T46, T47, T48, T49, T50>
Values(T1 v1, T2 v2, T3 v3, T4 v4,
16811 T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
16812 T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
16813 T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
16814 T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37,
16815 T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45,
16816 T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) {
16817 return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
16818 T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
16819 T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
16820 T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4,
16821 v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
16822 v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
16823 v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47,
16848 return Values(
false,
true);
16851# if GTEST_HAS_COMBINE
16900template <
typename Generator1,
typename Generator2>
16902 const Generator1& g1,
const Generator2& g2) {
16907template <
typename Generator1,
typename Generator2,
typename Generator3>
16909 const Generator1& g1,
const Generator2& g2,
const Generator3& g3) {
16914template <
typename Generator1,
typename Generator2,
typename Generator3,
16915 typename Generator4>
16916internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
16918 const Generator1& g1,
const Generator2& g2,
const Generator3& g3,
16919 const Generator4& g4) {
16925template <
typename Generator1,
typename Generator2,
typename Generator3,
16926 typename Generator4,
typename Generator5>
16927internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
16929 const Generator1& g1,
const Generator2& g2,
const Generator3& g3,
16930 const Generator4& g4,
const Generator5& g5) {
16932 Generator4, Generator5>(
16933 g1, g2, g3, g4, g5);
16936template <
typename Generator1,
typename Generator2,
typename Generator3,
16937 typename Generator4,
typename Generator5,
typename Generator6>
16938internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
16940 const Generator1& g1,
const Generator2& g2,
const Generator3& g3,
16941 const Generator4& g4,
const Generator5& g5,
const Generator6& g6) {
16943 Generator4, Generator5, Generator6>(
16944 g1, g2, g3, g4, g5, g6);
16947template <
typename Generator1,
typename Generator2,
typename Generator3,
16948 typename Generator4,
typename Generator5,
typename Generator6,
16949 typename Generator7>
16950internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
16951 Generator4, Generator5, Generator6, Generator7>
Combine(
16952 const Generator1& g1,
const Generator2& g2,
const Generator3& g3,
16953 const Generator4& g4,
const Generator5& g5,
const Generator6& g6,
16954 const Generator7& g7) {
16956 Generator4, Generator5, Generator6, Generator7>(
16957 g1, g2, g3, g4, g5, g6, g7);
16960template <
typename Generator1,
typename Generator2,
typename Generator3,
16961 typename Generator4,
typename Generator5,
typename Generator6,
16962 typename Generator7,
typename Generator8>
16963internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
16964 Generator4, Generator5, Generator6, Generator7, Generator8>
Combine(
16965 const Generator1& g1,
const Generator2& g2,
const Generator3& g3,
16966 const Generator4& g4,
const Generator5& g5,
const Generator6& g6,
16967 const Generator7& g7,
const Generator8& g8) {
16969 Generator4, Generator5, Generator6, Generator7, Generator8>(
16970 g1, g2, g3, g4, g5, g6, g7, g8);
16973template <
typename Generator1,
typename Generator2,
typename Generator3,
16974 typename Generator4,
typename Generator5,
typename Generator6,
16975 typename Generator7,
typename Generator8,
typename Generator9>
16976internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
16977 Generator4, Generator5, Generator6, Generator7, Generator8,
16979 const Generator1& g1,
const Generator2& g2,
const Generator3& g3,
16980 const Generator4& g4,
const Generator5& g5,
const Generator6& g6,
16981 const Generator7& g7,
const Generator8& g8,
const Generator9& g9) {
16983 Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>(
16984 g1, g2, g3, g4, g5, g6, g7, g8, g9);
16987template <
typename Generator1,
typename Generator2,
typename Generator3,
16988 typename Generator4,
typename Generator5,
typename Generator6,
16989 typename Generator7,
typename Generator8,
typename Generator9,
16990 typename Generator10>
16991internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
16992 Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
16994 const Generator1& g1,
const Generator2& g2,
const Generator3& g3,
16995 const Generator4& g4,
const Generator5& g5,
const Generator6& g6,
16996 const Generator7& g7,
const Generator8& g8,
const Generator9& g9,
16997 const Generator10& g10) {
16999 Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
17001 g1, g2, g3, g4, g5, g6, g7, g8, g9, g10);
17007# define TEST_P(test_case_name, test_name) \
17008 class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
17009 : public test_case_name { \
17011 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
17012 virtual void TestBody(); \
17014 static int AddToRegistry() { \
17015 ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
17016 GetTestCasePatternHolder<test_case_name>(\
17017 #test_case_name, __FILE__, __LINE__)->AddTestPattern(\
17020 new ::testing::internal::TestMetaFactory< \
17021 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \
17024 static int gtest_registering_dummy_; \
17025 GTEST_DISALLOW_COPY_AND_ASSIGN_(\
17026 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \
17028 int GTEST_TEST_CLASS_NAME_(test_case_name, \
17029 test_name)::gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_ = \
17030 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
17031 void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
17033# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \
17034 ::testing::internal::ParamGenerator<test_case_name::ParamType> \
17035 gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \
17036 int gtest_##prefix##test_case_name##_dummy_ GTEST_ATTRIBUTE_UNUSED_ = \
17037 ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
17038 GetTestCasePatternHolder<test_case_name>(\
17039 #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\
17041 >est_##prefix##test_case_name##_EvalGenerator_, \
17042 __FILE__, __LINE__)
17082#ifndef GTEST_INCLUDE_GTEST_GTEST_PROD_H_
17083#define GTEST_INCLUDE_GTEST_GTEST_PROD_H_
17103#define FRIEND_TEST(test_case_name, test_name)\
17104friend class test_case_name##_##test_name##_Test
17139#ifndef GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
17140#define GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
17165 const char* a_file_name,
17167 const char* a_message)
17169 file_name_(a_file_name ==
NULL ?
"" : a_file_name),
17170 line_number_(a_line_number),
17171 summary_(ExtractSummary(a_message)),
17172 message_(a_message) {
17181 return file_name_.empty() ?
NULL : file_name_.c_str();
17189 const char*
summary()
const {
return summary_.c_str(); }
17192 const char*
message()
const {
return message_.c_str(); }
17195 bool passed()
const {
return type_ == kSuccess; }
17198 bool failed()
const {
return type_ != kSuccess; }
17211 static std::string ExtractSummary(
const char* message);
17244 std::vector<TestPartResult> array_;
17257namespace internal {
17273 bool has_new_fatal_failure_;
17315#ifndef GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
17316#define GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
17328template <
typename T>
17332 typedef std::list<T> List;
17340typedef testing::Types<char, int, unsigned int> MyTypes;
17341TYPED_TEST_CASE(FooTest, MyTypes);
17349TYPED_TEST(FooTest, DoesBlah) {
17353 TypeParam
n = this->value_;
17357 n += TestFixture::shared_;
17361 typename TestFixture::List values;
17362 values.push_back(
n);
17366TYPED_TEST(FooTest, HasPropertyA) { ... }
17388template <
typename T>
17396TYPED_TEST_CASE_P(FooTest);
17400TYPED_TEST_P(FooTest, DoesBlah) {
17406TYPED_TEST_P(FooTest, HasPropertyA) { ... }
17412REGISTER_TYPED_TEST_CASE_P(FooTest,
17413 DoesBlah, HasPropertyA);
17423typedef testing::Types<char, int, unsigned int> MyTypes;
17424INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes);
17435#if GTEST_HAS_TYPED_TEST
17441# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_
17446# define TYPED_TEST_CASE(CaseName, Types) \
17447 typedef ::testing::internal::TypeList< Types >::type \
17448 GTEST_TYPE_PARAMS_(CaseName)
17450# define TYPED_TEST(CaseName, TestName) \
17451 template <typename gtest_TypeParam_> \
17452 class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \
17453 : public CaseName<gtest_TypeParam_> { \
17455 typedef CaseName<gtest_TypeParam_> TestFixture; \
17456 typedef gtest_TypeParam_ TypeParam; \
17457 virtual void TestBody(); \
17459 bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \
17460 ::testing::internal::TypeParameterizedTest< \
17462 ::testing::internal::TemplateSel< \
17463 GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \
17464 GTEST_TYPE_PARAMS_(CaseName)>::Register(\
17465 "", #CaseName, #TestName, 0); \
17466 template <typename gtest_TypeParam_> \
17467 void GTEST_TEST_CLASS_NAME_(CaseName, TestName)<gtest_TypeParam_>::TestBody()
17473#if GTEST_HAS_TYPED_TEST_P
17480# define GTEST_CASE_NAMESPACE_(TestCaseName) \
17481 gtest_case_##TestCaseName##_
17487# define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \
17488 gtest_typed_test_case_p_state_##TestCaseName##_
17494# define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \
17495 gtest_registered_test_names_##TestCaseName##_
17500# define TYPED_TEST_CASE_P(CaseName) \
17501 static ::testing::internal::TypedTestCasePState \
17502 GTEST_TYPED_TEST_CASE_P_STATE_(CaseName)
17504# define TYPED_TEST_P(CaseName, TestName) \
17505 namespace GTEST_CASE_NAMESPACE_(CaseName) { \
17506 template <typename gtest_TypeParam_> \
17507 class TestName : public CaseName<gtest_TypeParam_> { \
17509 typedef CaseName<gtest_TypeParam_> TestFixture; \
17510 typedef gtest_TypeParam_ TypeParam; \
17511 virtual void TestBody(); \
17513 static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \
17514 GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\
17515 __FILE__, __LINE__, #CaseName, #TestName); \
17517 template <typename gtest_TypeParam_> \
17518 void GTEST_CASE_NAMESPACE_(CaseName)::TestName<gtest_TypeParam_>::TestBody()
17520# define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \
17521 namespace GTEST_CASE_NAMESPACE_(CaseName) { \
17522 typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \
17524 static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \
17525 GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\
17526 __FILE__, __LINE__, #__VA_ARGS__)
17531# define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \
17532 bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \
17533 ::testing::internal::TypeParameterizedTestCase<CaseName, \
17534 GTEST_CASE_NAMESPACE_(CaseName)::gtest_AllTests_, \
17535 ::testing::internal::TypeList< Types >::type>::Register(\
17536 #Prefix, #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName))
17626namespace internal {
17629class DefaultGlobalTestPartResultReporter;
17630class ExecDeathTest;
17631class NoExecDeathTest;
17632class FinalSuccessChecker;
17633class GTestFlagSaver;
17634class StreamingListenerTest;
17635class TestResultAccessor;
17636class TestEventListenersAccessor;
17637class TestEventRepeater;
17638class UnitTestRecordPropertyTestHelper;
17639class WindowsDeathTest;
17742 operator bool()
const {
return success_; }
17752 return message_.get() !=
NULL ? message_->c_str() :
"";
17767 ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) {
17768 AppendMessage(
Message() << basic_manipulator);
17774 void AppendMessage(
const Message& a_message) {
17775 if (message_.get() ==
NULL)
17777 message_->append(a_message.
GetString().c_str());
17786 internal::scoped_ptr< ::std::string> message_;
17860 static bool HasFailure() {
return HasFatalFailure() || HasNonfatalFailure(); }
17891 static bool HasSameFixtureClass();
17899 virtual void TestBody() = 0;
17906 void DeleteSelf_() {
delete this; }
17909 const internal::GTestFlagSaver*
const gtest_flag_saver_;
17927 struct Setup_should_be_spelled_SetUp {};
17928 virtual Setup_should_be_spelled_SetUp* Setup() {
return NULL; }
17946 key_(a_key), value_(a_value) {
17951 return key_.c_str();
17956 return value_.c_str();
17961 value_ = new_value;
18021 friend class internal::DefaultGlobalTestPartResultReporter;
18022 friend class internal::ExecDeathTest;
18023 friend class internal::TestResultAccessor;
18024 friend class internal::UnitTestImpl;
18025 friend class internal::WindowsDeathTest;
18028 const std::vector<TestPartResult>& test_part_results()
const {
18029 return test_part_results_;
18033 const std::vector<TestProperty>& test_properties()
const {
18034 return test_properties_;
18038 void set_elapsed_time(
TimeInMillis elapsed) { elapsed_time_ = elapsed; }
18046 void RecordProperty(
const std::string& xml_element,
18047 const TestProperty& test_property);
18052 static bool ValidateTestProperty(
const std::string& xml_element,
18053 const TestProperty& test_property);
18056 void AddTestPartResult(
const TestPartResult& test_part_result);
18059 int death_test_count()
const {
return death_test_count_; }
18062 int increment_death_test_count() {
return ++death_test_count_; }
18065 void ClearTestPartResults();
18072 internal::Mutex test_properites_mutex_;
18075 std::vector<TestPartResult> test_part_results_;
18077 std::vector<TestProperty> test_properties_;
18079 int death_test_count_;
18108 const char*
name()
const {
return name_.c_str(); }
18113 if (type_param_.get() !=
NULL)
18114 return type_param_->c_str();
18121 if (value_param_.get() !=
NULL)
18122 return value_param_->c_str();
18149 return matches_filter_;
18156#if GTEST_HAS_DEATH_TEST
18157 friend class internal::DefaultDeathTestFactory;
18161 friend class internal::UnitTestImpl;
18162 friend class internal::StreamingListenerTest;
18164 const char* test_case_name,
18166 const char* type_param,
18167 const char* value_param,
18177 const char* a_type_param,
18178 const char* a_value_param,
18184 int increment_death_test_count() {
18185 return result_.increment_death_test_count();
18192 static void ClearTestResult(
TestInfo* test_info) {
18193 test_info->result_.Clear();
18201 const internal::scoped_ptr<const ::std::string> type_param_;
18204 const internal::scoped_ptr<const ::std::string> value_param_;
18208 bool matches_filter_;
18210 internal::TestFactoryBase*
const factory_;
18215 TestResult result_;
18245 const char*
name()
const {
return name_.c_str(); }
18250 if (type_param_.get() !=
NULL)
18251 return type_param_->c_str();
18283 bool Failed()
const {
return failed_test_count() > 0; }
18298 friend class internal::UnitTestImpl;
18301 std::vector<TestInfo*>& test_info_list() {
return test_info_list_; }
18304 const std::vector<TestInfo*>& test_info_list()
const {
18305 return test_info_list_;
18310 TestInfo* GetMutableTestInfo(
int i);
18313 void set_should_run(
bool should) { should_run_ = should; }
18317 void AddTestInfo(TestInfo * test_info);
18320 void ClearResult();
18323 static void ClearTestCaseResult(TestCase* test_case) {
18324 test_case->ClearResult();
18332 void RunSetUpTestCase() { (*set_up_tc_)(); }
18336 void RunTearDownTestCase() { (*tear_down_tc_)(); }
18339 static bool TestPassed(
const TestInfo* test_info) {
18340 return test_info->should_run() && test_info->result()->Passed();
18344 static bool TestFailed(
const TestInfo* test_info) {
18345 return test_info->should_run() && test_info->result()->Failed();
18350 static bool TestReportableDisabled(
const TestInfo* test_info) {
18351 return test_info->is_reportable() && test_info->is_disabled_;
18355 static bool TestDisabled(
const TestInfo* test_info) {
18356 return test_info->is_disabled_;
18360 static bool TestReportable(
const TestInfo* test_info) {
18361 return test_info->is_reportable();
18365 static bool ShouldRunTest(
const TestInfo* test_info) {
18366 return test_info->should_run();
18370 void ShuffleTests(internal::Random* random);
18373 void UnshuffleTests();
18379 const internal::scoped_ptr<const ::std::string> type_param_;
18382 std::vector<TestInfo*> test_info_list_;
18386 std::vector<int> test_indices_;
18397 TestResult ad_hoc_test_result_;
18430 struct Setup_should_be_spelled_SetUp {};
18431 virtual Setup_should_be_spelled_SetUp* Setup() {
return NULL; }
18447 int iteration) = 0;
18478 int iteration) = 0;
18530 return default_result_printer_;
18541 return default_xml_generator_;
18547 friend class internal::DefaultGlobalTestPartResultReporter;
18548 friend class internal::NoExecDeathTest;
18549 friend class internal::TestEventListenersAccessor;
18550 friend class internal::UnitTestImpl;
18572 bool EventForwardingEnabled()
const;
18573 void SuppressEventForwarding();
18576 internal::TestEventRepeater* repeater_;
18613 const
char* original_working_dir() const;
18626 int random_seed() const;
18628#if GTEST_HAS_PARAM_TEST
18729 TestCase* GetMutableTestCase(
int i);
18732 internal::UnitTestImpl* impl() {
return impl_; }
18733 const internal::UnitTestImpl* impl()
const {
return impl_; }
18740 friend class internal::StreamingListenerTest;
18741 friend class internal::UnitTestRecordPropertyTestHelper;
18756 void PushGTestTrace(
const internal::TraceInfo& trace)
18760 void PopGTestTrace()
18765 mutable internal::Mutex mutex_;
18771 internal::UnitTestImpl* impl_;
18796 return UnitTest::GetInstance()->AddEnvironment(env);
18814namespace internal {
18831template <
typename ToPr
int,
typename OtherOperand>
18840template <
typename ToPr
int,
size_t N,
typename OtherOperand>
18851#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType) \
18852 template <typename OtherOperand> \
18853 class FormatForComparison<CharType*, OtherOperand> { \
18855 static ::std::string Format(CharType* value) { \
18856 return ::testing::PrintToString(static_cast<const void*>(value)); \
18865#undef GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_
18870#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType) \
18872 class FormatForComparison<CharType*, OtherStringType> { \
18874 static ::std::string Format(CharType* value) { \
18875 return ::testing::PrintToString(value); \
18882#if GTEST_HAS_GLOBAL_STRING
18887#if GTEST_HAS_GLOBAL_WSTRING
18892#if GTEST_HAS_STD_WSTRING
18897#undef GTEST_IMPL_FORMAT_C_STRING_AS_STRING_
18907template <
typename T1,
typename T2>
18909 const T1&
value,
const T2& ) {
18914template <
typename T1,
typename T2>
18916 const char* actual_expression,
18917 const T1& expected,
18918 const T2& actual) {
18920# pragma warning(push)
18921# pragma warning(disable:4389)
18925 if (expected == actual) {
18930# pragma warning(pop)
18944 const char* actual_expression,
18952template <
bool lhs_is_null_literal>
18956 template <
typename T1,
typename T2>
18958 const char* actual_expression,
18959 const T1& expected,
18960 const T2& actual) {
18961 return CmpHelperEQ(expected_expression, actual_expression, expected,
18972 const char* actual_expression,
18975 return CmpHelperEQ(expected_expression, actual_expression, expected,
18989 template <
typename T1,
typename T2>
18991 const char* expected_expression,
18992 const char* actual_expression,
18993 const T1& expected,
19001 return CmpHelperEQ(expected_expression, actual_expression, expected,
19007 template <
typename T>
19009 const char* expected_expression,
19010 const char* actual_expression,
19020 return CmpHelperEQ(expected_expression, actual_expression,
19021 static_cast<T*
>(
NULL), actual);
19035#define GTEST_IMPL_CMP_HELPER_(op_name, op)\
19036template <typename T1, typename T2>\
19037AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
19038 const T1& val1, const T2& val2) {\
19039 if (val1 op val2) {\
19040 return AssertionSuccess();\
19042 return AssertionFailure() \
19043 << "Expected: (" << expr1 << ") " #op " (" << expr2\
19044 << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\
19045 << " vs " << FormatForComparisonFailureMessage(val2, val1);\
19048GTEST_API_ AssertionResult CmpHelper##op_name(\
19049 const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
19064#undef GTEST_IMPL_CMP_HELPER_
19070 const char* actual_expression,
19071 const char* expected,
19072 const char* actual);
19078 const char* actual_expression,
19079 const char* expected,
19080 const char* actual);
19086 const char* s2_expression,
19094 const char* s2_expression,
19103 const char* actual_expression,
19104 const wchar_t* expected,
19105 const wchar_t* actual);
19111 const char* s2_expression,
19113 const wchar_t* s2);
19126 const char* needle_expr,
const char* haystack_expr,
19127 const char* needle,
const char* haystack);
19129 const char* needle_expr,
const char* haystack_expr,
19130 const wchar_t* needle,
const wchar_t* haystack);
19132 const char* needle_expr,
const char* haystack_expr,
19133 const char* needle,
const char* haystack);
19135 const char* needle_expr,
const char* haystack_expr,
19136 const wchar_t* needle,
const wchar_t* haystack);
19138 const char* needle_expr,
const char* haystack_expr,
19141 const char* needle_expr,
const char* haystack_expr,
19144#if GTEST_HAS_STD_WSTRING
19146 const char* needle_expr,
const char* haystack_expr,
19149 const char* needle_expr,
const char* haystack_expr,
19153namespace internal {
19162template <
typename RawType>
19164 const char* actual_expression,
19169 if (lhs.AlmostEquals(rhs)) {
19173 ::std::stringstream expected_ss;
19174 expected_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
19177 ::std::stringstream actual_ss;
19178 actual_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
19193 const char* abs_error_expr,
19206 const char* message);
19218 struct AssertHelperData {
19220 const char* srcfile,
19223 :
type(t), file(srcfile),
line(line_num), message(msg) { }
19226 const char*
const file;
19234 AssertHelperData*
const data_;
19241#if GTEST_HAS_PARAM_TEST
19276template <
typename T>
19289 <<
"GetParam() can only be called inside a value-parameterized test "
19290 <<
"-- did you intend to write TEST_P instead of TEST_F?";
19291 return *parameter_;
19297 static void SetParam(
const ParamType* parameter) {
19298 parameter_ = parameter;
19302 static const ParamType* parameter_;
19308template <
typename T>
19314template <
typename T>
19340#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed")
19344#define ADD_FAILURE_AT(file, line) \
19345 GTEST_MESSAGE_AT_(file, line, "Failed", \
19346 ::testing::TestPartResult::kNonFatalFailure)
19349#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed")
19353#if !GTEST_DONT_DEFINE_FAIL
19354# define FAIL() GTEST_FAIL()
19358#define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded")
19362#if !GTEST_DONT_DEFINE_SUCCEED
19363# define SUCCEED() GTEST_SUCCEED()
19375#define EXPECT_THROW(statement, expected_exception) \
19376 GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_)
19377#define EXPECT_NO_THROW(statement) \
19378 GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_)
19379#define EXPECT_ANY_THROW(statement) \
19380 GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_)
19381#define ASSERT_THROW(statement, expected_exception) \
19382 GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_)
19383#define ASSERT_NO_THROW(statement) \
19384 GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_)
19385#define ASSERT_ANY_THROW(statement) \
19386 GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_)
19391#define EXPECT_TRUE(condition) \
19392 GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
19393 GTEST_NONFATAL_FAILURE_)
19394#define EXPECT_FALSE(condition) \
19395 GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
19396 GTEST_NONFATAL_FAILURE_)
19397#define ASSERT_TRUE(condition) \
19398 GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
19399 GTEST_FATAL_FAILURE_)
19400#define ASSERT_FALSE(condition) \
19401 GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
19402 GTEST_FATAL_FAILURE_)
19440#ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
19441#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
19444#ifndef GTEST_INCLUDE_GTEST_GTEST_H_
19445# error Do not include gtest_pred_impl.h directly. Include gtest.h instead.
19480#define GTEST_ASSERT_(expression, on_failure) \
19481 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
19482 if (const ::testing::AssertionResult gtest_ar = (expression)) \
19485 on_failure(gtest_ar.failure_message())
19490template <
typename Pred,
19499 << e1 <<
") evaluates to false, where"
19500 <<
"\n" << e1 <<
" evaluates to " << v1;
19505#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\
19506 GTEST_ASSERT_(pred_format(#v1, v1), \
19511#define GTEST_PRED1_(pred, v1, on_failure)\
19512 GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \
19518#define EXPECT_PRED_FORMAT1(pred_format, v1) \
19519 GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
19520#define EXPECT_PRED1(pred, v1) \
19521 GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_)
19522#define ASSERT_PRED_FORMAT1(pred_format, v1) \
19523 GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_)
19524#define ASSERT_PRED1(pred, v1) \
19525 GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_)
19531template <
typename Pred,
19544 << e2 <<
") evaluates to false, where"
19545 <<
"\n" << e1 <<
" evaluates to " << v1
19546 <<
"\n" << e2 <<
" evaluates to " << v2;
19551#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\
19552 GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \
19557#define GTEST_PRED2_(pred, v1, v2, on_failure)\
19558 GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \
19566#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \
19567 GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_)
19568#define EXPECT_PRED2(pred, v1, v2) \
19569 GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_)
19570#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \
19571 GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
19572#define ASSERT_PRED2(pred, v1, v2) \
19573 GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_)
19579template <
typename Pred,
19596 << e3 <<
") evaluates to false, where"
19597 <<
"\n" << e1 <<
" evaluates to " << v1
19598 <<
"\n" << e2 <<
" evaluates to " << v2
19599 <<
"\n" << e3 <<
" evaluates to " << v3;
19604#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\
19605 GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \
19610#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\
19611 GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \
19621#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \
19622 GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
19623#define EXPECT_PRED3(pred, v1, v2, v3) \
19624 GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
19625#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \
19626 GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_)
19627#define ASSERT_PRED3(pred, v1, v2, v3) \
19628 GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_)
19634template <
typename Pred,
19655 << e4 <<
") evaluates to false, where"
19656 <<
"\n" << e1 <<
" evaluates to " << v1
19657 <<
"\n" << e2 <<
" evaluates to " << v2
19658 <<
"\n" << e3 <<
" evaluates to " << v3
19659 <<
"\n" << e4 <<
" evaluates to " << v4;
19664#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\
19665 GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \
19670#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\
19671 GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \
19683#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
19684 GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
19685#define EXPECT_PRED4(pred, v1, v2, v3, v4) \
19686 GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
19687#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
19688 GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
19689#define ASSERT_PRED4(pred, v1, v2, v3, v4) \
19690 GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
19696template <
typename Pred,
19721 << e5 <<
") evaluates to false, where"
19722 <<
"\n" << e1 <<
" evaluates to " << v1
19723 <<
"\n" << e2 <<
" evaluates to " << v2
19724 <<
"\n" << e3 <<
" evaluates to " << v3
19725 <<
"\n" << e4 <<
" evaluates to " << v4
19726 <<
"\n" << e5 <<
" evaluates to " << v5;
19731#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\
19732 GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \
19737#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\
19738 GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \
19752#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
19753 GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
19754#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \
19755 GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
19756#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
19757 GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
19758#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \
19759 GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
19811#define EXPECT_EQ(expected, actual) \
19812 EXPECT_PRED_FORMAT2(::testing::internal:: \
19813 EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \
19815#define EXPECT_NE(expected, actual) \
19816 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, expected, actual)
19817#define EXPECT_LE(val1, val2) \
19818 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
19819#define EXPECT_LT(val1, val2) \
19820 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
19821#define EXPECT_GE(val1, val2) \
19822 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
19823#define EXPECT_GT(val1, val2) \
19824 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
19826#define GTEST_ASSERT_EQ(expected, actual) \
19827 ASSERT_PRED_FORMAT2(::testing::internal:: \
19828 EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \
19830#define GTEST_ASSERT_NE(val1, val2) \
19831 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
19832#define GTEST_ASSERT_LE(val1, val2) \
19833 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
19834#define GTEST_ASSERT_LT(val1, val2) \
19835 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
19836#define GTEST_ASSERT_GE(val1, val2) \
19837 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
19838#define GTEST_ASSERT_GT(val1, val2) \
19839 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
19844#if !GTEST_DONT_DEFINE_ASSERT_EQ
19845# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
19848#if !GTEST_DONT_DEFINE_ASSERT_NE
19849# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)
19852#if !GTEST_DONT_DEFINE_ASSERT_LE
19853# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)
19856#if !GTEST_DONT_DEFINE_ASSERT_LT
19857# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)
19860#if !GTEST_DONT_DEFINE_ASSERT_GE
19861# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)
19864#if !GTEST_DONT_DEFINE_ASSERT_GT
19865# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
19884#define EXPECT_STREQ(expected, actual) \
19885 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual)
19886#define EXPECT_STRNE(s1, s2) \
19887 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
19888#define EXPECT_STRCASEEQ(expected, actual) \
19889 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual)
19890#define EXPECT_STRCASENE(s1, s2)\
19891 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
19893#define ASSERT_STREQ(expected, actual) \
19894 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual)
19895#define ASSERT_STRNE(s1, s2) \
19896 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
19897#define ASSERT_STRCASEEQ(expected, actual) \
19898 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual)
19899#define ASSERT_STRCASENE(s1, s2)\
19900 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
19916#define EXPECT_FLOAT_EQ(expected, actual)\
19917 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
19920#define EXPECT_DOUBLE_EQ(expected, actual)\
19921 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
19924#define ASSERT_FLOAT_EQ(expected, actual)\
19925 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
19928#define ASSERT_DOUBLE_EQ(expected, actual)\
19929 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
19932#define EXPECT_NEAR(val1, val2, abs_error)\
19933 EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
19934 val1, val2, abs_error)
19936#define ASSERT_NEAR(val1, val2, abs_error)\
19937 ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
19938 val1, val2, abs_error)
19948 float val1,
float val2);
19950 double val1,
double val2);
19953#if GTEST_OS_WINDOWS
19964# define EXPECT_HRESULT_SUCCEEDED(expr) \
19965 EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
19967# define ASSERT_HRESULT_SUCCEEDED(expr) \
19968 ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
19970# define EXPECT_HRESULT_FAILED(expr) \
19971 EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
19973# define ASSERT_HRESULT_FAILED(expr) \
19974 ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
19988#define ASSERT_NO_FATAL_FAILURE(statement) \
19989 GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_)
19990#define EXPECT_NO_FATAL_FAILURE(statement) \
19991 GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)
20004#define SCOPED_TRACE(message) \
20005 ::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\
20006 __FILE__, __LINE__, ::testing::Message() << (message))
20038template <
typename T1,
typename T2>
20069#define GTEST_TEST(test_case_name, test_name)\
20070 GTEST_TEST_(test_case_name, test_name, \
20071 ::testing::Test, ::testing::internal::GetTestTypeId())
20075#if !GTEST_DONT_DEFINE_TEST
20076# define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name)
20105#define TEST_F(test_fixture, test_name)\
20106 GTEST_TEST_(test_fixture, test_name, test_fixture, \
20107 ::testing::internal::GetTypeId<test_fixture>())
20122 return ::testing::UnitTest::GetInstance()->Run();
const CvMat const CvMat const CvMat CvMat CvMat CvMat CvMat CvSize CvMat CvMat * T
Definition: calib3d.hpp:275
CvSize CvPoint2D32f int count
Definition: calib3d.hpp:224
CvSize size
Definition: calib3d.hpp:213
static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) ConstField(const Tuple &t)
Definition: ts_gtest.h:1495
static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) Field(Tuple &t)
Definition: ts_gtest.h:1491
static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) ConstField(const Tuple &t)
Definition: ts_gtest.h:1507
static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) Field(Tuple &t)
Definition: ts_gtest.h:1503
static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) ConstField(const Tuple &t)
Definition: ts_gtest.h:1519
static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) Field(Tuple &t)
Definition: ts_gtest.h:1515
static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) Field(Tuple &t)
Definition: ts_gtest.h:1527
static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) ConstField(const Tuple &t)
Definition: ts_gtest.h:1531
static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) ConstField(const Tuple &t)
Definition: ts_gtest.h:1543
static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) Field(Tuple &t)
Definition: ts_gtest.h:1539
static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) Field(Tuple &t)
Definition: ts_gtest.h:1551
static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) ConstField(const Tuple &t)
Definition: ts_gtest.h:1555
static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) Field(Tuple &t)
Definition: ts_gtest.h:1563
static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) ConstField(const Tuple &t)
Definition: ts_gtest.h:1567
static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) Field(Tuple &t)
Definition: ts_gtest.h:1575
static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) ConstField(const Tuple &t)
Definition: ts_gtest.h:1579
static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) ConstField(const Tuple &t)
Definition: ts_gtest.h:1591
static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) Field(Tuple &t)
Definition: ts_gtest.h:1587
static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) ConstField(const Tuple &t)
Definition: ts_gtest.h:1603
static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) Field(Tuple &t)
Definition: ts_gtest.h:1599
Definition: ts_gtest.h:825
Definition: ts_gtest.h:885
tuple & operator=(const tuple &)
Definition: ts_gtest.h:889
tuple(const tuple &)
Definition: ts_gtest.h:888
tuple()
Definition: ts_gtest.h:887
Definition: ts_gtest.h:1292
T5 f5_
Definition: ts_gtest.h:1342
T9 f9_
Definition: ts_gtest.h:1346
tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, GTEST_BY_REF_(T8) f8, GTEST_BY_REF_(T9) f9)
Definition: ts_gtest.h:1299
T6 f6_
Definition: ts_gtest.h:1343
tuple & operator=(const GTEST_10_TUPLE_(U)&t)
Definition: ts_gtest.h:1316
T0 f0_
Definition: ts_gtest.h:1337
T7 f7_
Definition: ts_gtest.h:1344
T1 f1_
Definition: ts_gtest.h:1338
tuple(const GTEST_10_TUPLE_(U)&t)
Definition: ts_gtest.h:1309
GTEST_DECLARE_TUPLE_AS_FRIEND_ tuple & CopyFrom(const GTEST_10_TUPLE_(U)&t)
Definition: ts_gtest.h:1323
T2 f2_
Definition: ts_gtest.h:1339
T4 f4_
Definition: ts_gtest.h:1341
tuple & operator=(const tuple &t)
Definition: ts_gtest.h:1313
T3 f3_
Definition: ts_gtest.h:1340
tuple()
Definition: ts_gtest.h:1296
tuple(const tuple &t)
Definition: ts_gtest.h:1305
T8 f8_
Definition: ts_gtest.h:1345
Definition: ts_gtest.h:17733
AssertionResult(const AssertionResult &other)
AssertionResult operator!() const
const char * message() const
Definition: ts_gtest.h:17751
AssertionResult & operator<<(const T &value)
Definition: ts_gtest.h:17759
AssertionResult(bool success)
Definition: ts_gtest.h:17739
const char * failure_message() const
Definition: ts_gtest.h:17756
AssertionResult & operator<<(::std::ostream &(*basic_manipulator)(::std::ostream &stream))
Definition: ts_gtest.h:17766
Definition: ts_gtest.h:18489
virtual void OnEnvironmentsTearDownStart(const UnitTest &)
Definition: ts_gtest.h:18501
virtual void OnTestProgramEnd(const UnitTest &)
Definition: ts_gtest.h:18505
virtual void OnEnvironmentsSetUpStart(const UnitTest &)
Definition: ts_gtest.h:18494
virtual void OnTestIterationEnd(const UnitTest &, int)
Definition: ts_gtest.h:18503
virtual void OnTestPartResult(const TestPartResult &)
Definition: ts_gtest.h:18498
virtual void OnTestCaseEnd(const TestCase &)
Definition: ts_gtest.h:18500
virtual void OnTestIterationStart(const UnitTest &, int)
Definition: ts_gtest.h:18492
virtual void OnTestStart(const TestInfo &)
Definition: ts_gtest.h:18497
virtual void OnTestProgramStart(const UnitTest &)
Definition: ts_gtest.h:18491
virtual void OnEnvironmentsSetUpEnd(const UnitTest &)
Definition: ts_gtest.h:18495
virtual void OnTestCaseStart(const TestCase &)
Definition: ts_gtest.h:18496
virtual void OnEnvironmentsTearDownEnd(const UnitTest &)
Definition: ts_gtest.h:18502
virtual void OnTestEnd(const TestInfo &)
Definition: ts_gtest.h:18499
Definition: ts_gtest.h:18417
virtual void TearDown()
Definition: ts_gtest.h:18426
virtual ~Environment()
Definition: ts_gtest.h:18420
virtual void SetUp()
Definition: ts_gtest.h:18423
Definition: ts_gtest.h:3208
std::string GetString() const
Message(const char *str)
Definition: ts_gtest.h:3224
Message(const Message &msg)
Definition: ts_gtest.h:3219
Definition: ts_gtest.h:18223
const char * type_param() const
Definition: ts_gtest.h:18249
bool Passed() const
Definition: ts_gtest.h:18280
const TestInfo * GetTestInfo(int i) const
int test_to_run_count() const
int failed_test_count() const
const char * name() const
Definition: ts_gtest.h:18245
bool should_run() const
Definition: ts_gtest.h:18256
TestCase(const char *name, const char *a_type_param, Test::SetUpTestCaseFunc set_up_tc, Test::TearDownTestCaseFunc tear_down_tc)
int disabled_test_count() const
const TestResult & ad_hoc_test_result() const
Definition: ts_gtest.h:18294
int successful_test_count() const
int total_test_count() const
TimeInMillis elapsed_time() const
Definition: ts_gtest.h:18286
int reportable_disabled_test_count() const
int reportable_test_count() const
bool Failed() const
Definition: ts_gtest.h:18283
Definition: ts_gtest.h:18436
virtual void OnTestPartResult(const TestPartResult &test_part_result)=0
virtual ~TestEventListener()
Definition: ts_gtest.h:18438
virtual void OnEnvironmentsTearDownStart(const UnitTest &unit_test)=0
virtual void OnTestIterationEnd(const UnitTest &unit_test, int iteration)=0
virtual void OnTestProgramStart(const UnitTest &unit_test)=0
virtual void OnTestIterationStart(const UnitTest &unit_test, int iteration)=0
virtual void OnEnvironmentsTearDownEnd(const UnitTest &unit_test)=0
virtual void OnEnvironmentsSetUpStart(const UnitTest &unit_test)=0
virtual void OnEnvironmentsSetUpEnd(const UnitTest &unit_test)=0
virtual void OnTestCaseStart(const TestCase &test_case)=0
virtual void OnTestStart(const TestInfo &test_info)=0
virtual void OnTestEnd(const TestInfo &test_info)=0
virtual void OnTestProgramEnd(const UnitTest &unit_test)=0
virtual void OnTestCaseEnd(const TestCase &test_case)=0
Definition: ts_gtest.h:18509
TestEventListener * Release(TestEventListener *listener)
void Append(TestEventListener *listener)
TestEventListener * default_result_printer() const
Definition: ts_gtest.h:18529
TestEventListener * default_xml_generator() const
Definition: ts_gtest.h:18540
Definition: ts_gtest.h:17824
static bool HasNonfatalFailure()
static bool HasFatalFailure()
static void SetUpTestCase()
Definition: ts_gtest.h:17842
internal::SetUpTestCaseFunc SetUpTestCaseFunc
Definition: ts_gtest.h:17830
static bool HasFailure()
Definition: ts_gtest.h:17860
internal::TearDownTestCaseFunc TearDownTestCaseFunc
Definition: ts_gtest.h:17831
static void RecordProperty(const std::string &key, const std::string &value)
static void TearDownTestCase()
Definition: ts_gtest.h:17850
static void RecordProperty(const std::string &key, int value)
Definition: ts_gtest.h:18098
const char * value_param() const
Definition: ts_gtest.h:18120
bool is_reportable() const
Definition: ts_gtest.h:18145
bool should_run() const
Definition: ts_gtest.h:18142
const char * type_param() const
Definition: ts_gtest.h:18112
const char * name() const
Definition: ts_gtest.h:18108
const TestResult * result() const
Definition: ts_gtest.h:18153
const char * test_case_name() const
Definition: ts_gtest.h:18105
Definition: ts_gtest.h:17230
void Append(const TestPartResult &result)
const TestPartResult & GetTestPartResult(int index) const
TestPartResultArray()
Definition: ts_gtest.h:17232
Definition: ts_gtest.h:17151
const char * message() const
Definition: ts_gtest.h:17192
const char * summary() const
Definition: ts_gtest.h:17189
const char * file_name() const
Definition: ts_gtest.h:17180
bool nonfatally_failed() const
Definition: ts_gtest.h:17201
TestPartResult(Type a_type, const char *a_file_name, int a_line_number, const char *a_message)
Definition: ts_gtest.h:17164
Type
Definition: ts_gtest.h:17155
@ kNonFatalFailure
Definition: ts_gtest.h:17157
@ kSuccess
Definition: ts_gtest.h:17156
bool fatally_failed() const
Definition: ts_gtest.h:17204
bool failed() const
Definition: ts_gtest.h:17198
Type type() const
Definition: ts_gtest.h:17176
bool passed() const
Definition: ts_gtest.h:17195
int line_number() const
Definition: ts_gtest.h:17186
Definition: ts_gtest.h:17250
virtual ~TestPartResultReporterInterface()
Definition: ts_gtest.h:17252
virtual void ReportTestPartResult(const TestPartResult &result)=0
Definition: ts_gtest.h:17940
const char * value() const
Definition: ts_gtest.h:17955
TestProperty(const std::string &a_key, const std::string &a_value)
Definition: ts_gtest.h:17945
void SetValue(const std::string &new_value)
Definition: ts_gtest.h:17960
const char * key() const
Definition: ts_gtest.h:17950
Definition: ts_gtest.h:17977
bool HasFatalFailure() const
bool HasNonfatalFailure() const
int total_part_count() const
const TestProperty & GetTestProperty(int i) const
TimeInMillis elapsed_time() const
Definition: ts_gtest.h:18005
const TestPartResult & GetTestPartResult(int i) const
bool Passed() const
Definition: ts_gtest.h:17993
int test_property_count() const
Definition: ts_gtest.h:19315
Definition: ts_gtest.h:18596
int reportable_disabled_test_count() const
int Run() GTEST_MUST_USE_RESULT_
TimeInMillis elapsed_time() const
int reportable_test_count() const
static UnitTest * GetInstance()
int test_to_run_count() const
int successful_test_count() const
const TestCase * GetTestCase(int i) const
internal::ParameterizedTestCaseRegistry & parameterized_test_registry() GTEST_LOCK_EXCLUDED_(mutex_)
int total_test_case_count() const
int test_case_to_run_count() const
const TestResult & ad_hoc_test_result() const
TestEventListeners & listeners()
TimeInMillis start_timestamp() const
int failed_test_case_count() const
int successful_test_case_count() const
int failed_test_count() const
int disabled_test_count() const
int total_test_count() const
Definition: ts_gtest.h:19277
T ParamType
Definition: ts_gtest.h:19279
virtual ~WithParamInterface()
Definition: ts_gtest.h:19280
const ParamType & GetParam() const
Definition: ts_gtest.h:19287
Definition: ts_gtest.h:19200
void operator=(const Message &message) const
AssertHelper(TestPartResult::Type type, const char *file, int line, const char *message)
Definition: ts_gtest.h:15254
virtual ParamIteratorInterface< ParamType > * Begin() const
Definition: ts_gtest.h:15268
virtual ParamIteratorInterface< ParamType > * End() const
Definition: ts_gtest.h:15273
CartesianProductGenerator10(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6, const ParamGenerator< T7 > &g7, const ParamGenerator< T8 > &g8, const ParamGenerator< T9 > &g9, const ParamGenerator< T10 > &g10)
Definition: ts_gtest.h:15258
virtual ~CartesianProductGenerator10()
Definition: ts_gtest.h:15266
::std::tr1::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > ParamType
Definition: ts_gtest.h:15256
Definition: ts_gtest.h:13837
::std::tr1::tuple< T1, T2 > ParamType
Definition: ts_gtest.h:13839
virtual ~CartesianProductGenerator2()
Definition: ts_gtest.h:13844
virtual ParamIteratorInterface< ParamType > * End() const
Definition: ts_gtest.h:13849
CartesianProductGenerator2(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2)
Definition: ts_gtest.h:13841
virtual ParamIteratorInterface< ParamType > * Begin() const
Definition: ts_gtest.h:13846
Definition: ts_gtest.h:13952
virtual ParamIteratorInterface< ParamType > * Begin() const
Definition: ts_gtest.h:13961
::std::tr1::tuple< T1, T2, T3 > ParamType
Definition: ts_gtest.h:13954
virtual ParamIteratorInterface< ParamType > * End() const
Definition: ts_gtest.h:13965
virtual ~CartesianProductGenerator3()
Definition: ts_gtest.h:13959
CartesianProductGenerator3(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3)
Definition: ts_gtest.h:13956
Definition: ts_gtest.h:14084
CartesianProductGenerator4(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4)
Definition: ts_gtest.h:14088
virtual ~CartesianProductGenerator4()
Definition: ts_gtest.h:14092
virtual ParamIteratorInterface< ParamType > * Begin() const
Definition: ts_gtest.h:14094
::std::tr1::tuple< T1, T2, T3, T4 > ParamType
Definition: ts_gtest.h:14086
virtual ParamIteratorInterface< ParamType > * End() const
Definition: ts_gtest.h:14098
Definition: ts_gtest.h:14235
::std::tr1::tuple< T1, T2, T3, T4, T5 > ParamType
Definition: ts_gtest.h:14237
virtual ParamIteratorInterface< ParamType > * End() const
Definition: ts_gtest.h:14249
virtual ~CartesianProductGenerator5()
Definition: ts_gtest.h:14243
virtual ParamIteratorInterface< ParamType > * Begin() const
Definition: ts_gtest.h:14245
CartesianProductGenerator5(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5)
Definition: ts_gtest.h:14239
Definition: ts_gtest.h:14404
virtual ~CartesianProductGenerator6()
Definition: ts_gtest.h:14413
::std::tr1::tuple< T1, T2, T3, T4, T5, T6 > ParamType
Definition: ts_gtest.h:14406
virtual ParamIteratorInterface< ParamType > * Begin() const
Definition: ts_gtest.h:14415
CartesianProductGenerator6(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6)
Definition: ts_gtest.h:14408
virtual ParamIteratorInterface< ParamType > * End() const
Definition: ts_gtest.h:14419
Definition: ts_gtest.h:14590
virtual ParamIteratorInterface< ParamType > * Begin() const
Definition: ts_gtest.h:14601
virtual ~CartesianProductGenerator7()
Definition: ts_gtest.h:14599
CartesianProductGenerator7(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6, const ParamGenerator< T7 > &g7)
Definition: ts_gtest.h:14594
::std::tr1::tuple< T1, T2, T3, T4, T5, T6, T7 > ParamType
Definition: ts_gtest.h:14592
virtual ParamIteratorInterface< ParamType > * End() const
Definition: ts_gtest.h:14606
Definition: ts_gtest.h:14793
CartesianProductGenerator8(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6, const ParamGenerator< T7 > &g7, const ParamGenerator< T8 > &g8)
Definition: ts_gtest.h:14797
virtual ~CartesianProductGenerator8()
Definition: ts_gtest.h:14804
virtual ParamIteratorInterface< ParamType > * End() const
Definition: ts_gtest.h:14811
virtual ParamIteratorInterface< ParamType > * Begin() const
Definition: ts_gtest.h:14806
::std::tr1::tuple< T1, T2, T3, T4, T5, T6, T7, T8 > ParamType
Definition: ts_gtest.h:14795
Definition: ts_gtest.h:15015
virtual ParamIteratorInterface< ParamType > * Begin() const
Definition: ts_gtest.h:15028
::std::tr1::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9 > ParamType
Definition: ts_gtest.h:15017
virtual ~CartesianProductGenerator9()
Definition: ts_gtest.h:15026
virtual ParamIteratorInterface< ParamType > * End() const
Definition: ts_gtest.h:15033
CartesianProductGenerator9(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6, const ParamGenerator< T7 > &g7, const ParamGenerator< T8 > &g8, const ParamGenerator< T9 > &g9)
Definition: ts_gtest.h:15019
Definition: ts_gtest.h:15769
CartesianProductHolder10(const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7, const Generator8 &g8, const Generator9 &g9, const Generator10 &g10)
Definition: ts_gtest.h:15771
Definition: ts_gtest.h:15513
CartesianProductHolder2(const Generator1 &g1, const Generator2 &g2)
Definition: ts_gtest.h:15515
Definition: ts_gtest.h:15534
CartesianProductHolder3(const Generator1 &g1, const Generator2 &g2, const Generator3 &g3)
Definition: ts_gtest.h:15536
Definition: ts_gtest.h:15559
CartesianProductHolder4(const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4)
Definition: ts_gtest.h:15561
Definition: ts_gtest.h:15586
CartesianProductHolder5(const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5)
Definition: ts_gtest.h:15588
Definition: ts_gtest.h:15615
CartesianProductHolder6(const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6)
Definition: ts_gtest.h:15617
Definition: ts_gtest.h:15648
CartesianProductHolder7(const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7)
Definition: ts_gtest.h:15650
Definition: ts_gtest.h:15685
CartesianProductHolder8(const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7, const Generator8 &g8)
Definition: ts_gtest.h:15687
Definition: ts_gtest.h:15725
CartesianProductHolder9(const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7, const Generator8 &g8, const Generator9 &g9)
Definition: ts_gtest.h:15727
static AssertionResult Compare(const char *expected_expression, const char *actual_expression, const T1 &expected, const T2 &actual, typename EnableIf<!is_pointer< T2 >::value >::type *=0)
Definition: ts_gtest.h:18990
static AssertionResult Compare(const char *expected_expression, const char *actual_expression, Secret *, T *actual)
Definition: ts_gtest.h:19008
Definition: ts_gtest.h:18953
static AssertionResult Compare(const char *expected_expression, const char *actual_expression, BiggestInt expected, BiggestInt actual)
Definition: ts_gtest.h:18971
static AssertionResult Compare(const char *expected_expression, const char *actual_expression, const T1 &expected, const T2 &actual)
Definition: ts_gtest.h:18957
Definition: ts_gtest.h:3597
bool IsRootDirectory() const
static FilePath GetCurrentDir()
bool FileOrDirectoryExists() const
void Set(const FilePath &rhs)
Definition: ts_gtest.h:3611
static FilePath MakeFileName(const FilePath &directory, const FilePath &base_name, int number, const char *extension)
bool CreateDirectoriesRecursively() const
bool IsEmpty() const
Definition: ts_gtest.h:3649
FilePath()
Definition: ts_gtest.h:3599
const std::string & string() const
Definition: ts_gtest.h:3615
FilePath RemoveFileName() const
const char * c_str() const
Definition: ts_gtest.h:3616
FilePath RemoveDirectoryName() const
bool DirectoryExists() const
FilePath & operator=(const FilePath &rhs)
Definition: ts_gtest.h:3606
FilePath(const std::string &pathname)
Definition: ts_gtest.h:3602
FilePath RemoveExtension(const char *extension) const
static FilePath GenerateUniqueFileName(const FilePath &directory, const FilePath &base_name, const char *extension)
FilePath RemoveTrailingPathSeparator() const
static FilePath ConcatPaths(const FilePath &directory, const FilePath &relative_path)
bool IsAbsolutePath() const
bool CreateFolder() const
FilePath(const FilePath &rhs)
Definition: ts_gtest.h:3600
Definition: ts_gtest.h:7253
FloatingPoint(const RawType &x)
Definition: ts_gtest.h:7301
bool is_nan() const
Definition: ts_gtest.h:7337
static RawType Infinity()
Definition: ts_gtest.h:7315
bool AlmostEquals(const FloatingPoint &rhs) const
Definition: ts_gtest.h:7349
Bits fraction_bits() const
Definition: ts_gtest.h:7331
TypeWithSize< sizeof(RawType)>::UInt Bits
Definition: ts_gtest.h:7257
static RawType ReinterpretBits(const Bits bits)
Definition: ts_gtest.h:7308
const Bits & bits() const
Definition: ts_gtest.h:7325
Bits exponent_bits() const
Definition: ts_gtest.h:7328
Bits sign_bit() const
Definition: ts_gtest.h:7334
Definition: ts_gtest.h:2182
GTestLog(GTestLogSeverity severity, const char *file, int line)
::std::ostream & GetStream()
Definition: ts_gtest.h:2189
Definition: ts_gtest.h:2716
GTestMutexLock(Mutex *)
Definition: ts_gtest.h:2718
Definition: ts_gtest.h:17266
HasNewFatalFailureHelper()
bool has_new_fatal_failure() const
Definition: ts_gtest.h:17271
virtual void ReportTestPartResult(const TestPartResult &result)
virtual ~HasNewFatalFailureHelper()
Definition: ts_gtest.h:7800
Definition: ts_gtest.h:2703
void Unlock()
Definition: ts_gtest.h:2707
Mutex()
Definition: ts_gtest.h:2705
void Lock()
Definition: ts_gtest.h:2706
void AssertHeld() const
Definition: ts_gtest.h:2708
Definition: ts_gtest.h:7985
Element value_type
Definition: ts_gtest.h:7988
const_iterator begin() const
Definition: ts_gtest.h:8013
~NativeArray()
Definition: ts_gtest.h:8002
NativeArray(const Element *array, size_t count, RelationToSource relation)
Definition: ts_gtest.h:7993
bool operator==(const NativeArray &rhs) const
Definition: ts_gtest.h:8015
const Element * const_iterator
Definition: ts_gtest.h:7990
NativeArray(const NativeArray &rhs)
Definition: ts_gtest.h:7998
Element * iterator
Definition: ts_gtest.h:7989
const_iterator end() const
Definition: ts_gtest.h:8014
size_t size() const
Definition: ts_gtest.h:8012
Definition: ts_gtest.h:10219
iterator begin() const
Definition: ts_gtest.h:10231
ParamIterator< T > iterator
Definition: ts_gtest.h:10221
ParamGenerator(const ParamGenerator &other)
Definition: ts_gtest.h:10224
ParamGenerator(ParamGeneratorInterface< T > *impl)
Definition: ts_gtest.h:10223
iterator end() const
Definition: ts_gtest.h:10232
ParamGenerator & operator=(const ParamGenerator &other)
Definition: ts_gtest.h:10226
Definition: ts_gtest.h:10202
virtual ParamIteratorInterface< T > * End() const =0
T ParamType
Definition: ts_gtest.h:10204
virtual ~ParamGeneratorInterface()
Definition: ts_gtest.h:10206
virtual ParamIteratorInterface< T > * Begin() const =0
Definition: ts_gtest.h:10159
T value_type
Definition: ts_gtest.h:10161
ptrdiff_t difference_type
Definition: ts_gtest.h:10163
const T & operator*() const
Definition: ts_gtest.h:10173
bool operator!=(const ParamIterator &other) const
Definition: ts_gtest.h:10189
ParamIterator & operator++()
Definition: ts_gtest.h:10176
ParamIterator(const ParamIterator &other)
Definition: ts_gtest.h:10166
const T * operator->() const
Definition: ts_gtest.h:10174
const T & reference
Definition: ts_gtest.h:10162
ParamIterator & operator=(const ParamIterator &other)
Definition: ts_gtest.h:10167
bool operator==(const ParamIterator &other) const
Definition: ts_gtest.h:10186
ParamIterator operator++(int)
Definition: ts_gtest.h:10181
Definition: ts_gtest.h:10129
virtual ParamIteratorInterface * Clone() const =0
virtual const ParamGeneratorInterface< T > * BaseGenerator() const =0
virtual const T * Current() const =0
virtual bool Equals(const ParamIteratorInterface &other) const =0
virtual ~ParamIteratorInterface()
Definition: ts_gtest.h:10131
Definition: ts_gtest.h:10475
ParameterizedTestCaseInfoBase()
Definition: ts_gtest.h:10490
virtual const string & GetTestCaseName() const =0
virtual void RegisterTests()=0
virtual TypeId GetTestCaseTypeId() const =0
virtual ~ParameterizedTestCaseInfoBase()
Definition: ts_gtest.h:10477
Definition: ts_gtest.h:10504
virtual const string & GetTestCaseName() const
Definition: ts_gtest.h:10517
ParameterizedTestCaseInfo(const char *name)
Definition: ts_gtest.h:10513
virtual TypeId GetTestCaseTypeId() const
Definition: ts_gtest.h:10519
void AddTestPattern(const char *test_case_name, const char *test_base_name, TestMetaFactoryBase< ParamType > *meta_factory)
Definition: ts_gtest.h:10526
TestCase::ParamType ParamType
Definition: ts_gtest.h:10509
virtual void RegisterTests()
Definition: ts_gtest.h:10547
int AddTestCaseInstantiation(const string &instantiation_name, GeneratorCreationFunc *func, const char *, int)
Definition: ts_gtest.h:10535
Definition: ts_gtest.h:10616
ParameterizedTestCaseInfo< TestCase > * GetTestCasePatternHolder(const char *test_case_name, const char *file, int line)
Definition: ts_gtest.h:10629
~ParameterizedTestCaseRegistry()
Definition: ts_gtest.h:10619
ParameterizedTestCaseRegistry()
Definition: ts_gtest.h:10618
void RegisterTests()
Definition: ts_gtest.h:10659
Definition: ts_gtest.h:10413
virtual Test * CreateTest()
Definition: ts_gtest.h:10418
ParameterizedTestFactory(ParamType parameter)
Definition: ts_gtest.h:10416
TestClass::ParamType ParamType
Definition: ts_gtest.h:10415
Definition: ts_gtest.h:2084
static bool PartialMatch(const ::std::string &str, const RE &re)
Definition: ts_gtest.h:2115
static bool FullMatch(const char *str, const RE &re)
const char * pattern() const
Definition: ts_gtest.h:2103
RE(const ::std::string ®ex)
Definition: ts_gtest.h:2091
RE(const char *regex)
Definition: ts_gtest.h:2099
static bool PartialMatch(const char *str, const RE &re)
static bool FullMatch(const ::std::string &str, const RE &re)
Definition: ts_gtest.h:2112
RE(const RE &other)
Definition: ts_gtest.h:2088
Definition: ts_gtest.h:7697
Random(UInt32 seed)
Definition: ts_gtest.h:7701
UInt32 Generate(UInt32 range)
void Reseed(UInt32 seed)
Definition: ts_gtest.h:7703
Definition: ts_gtest.h:10243
virtual ParamIteratorInterface< T > * Begin() const
Definition: ts_gtest.h:10250
virtual ParamIteratorInterface< T > * End() const
Definition: ts_gtest.h:10253
RangeGenerator(T begin, T end, IncrementT step)
Definition: ts_gtest.h:10245
virtual ~RangeGenerator()
Definition: ts_gtest.h:10248
Definition: ts_gtest.h:7177
ScopedTrace(const char *file, int line, const Message &message)
Definition: ts_gtest.h:3430
static bool CStringEquals(const char *lhs, const char *rhs)
static bool CaseInsensitiveWideCStringEquals(const wchar_t *lhs, const wchar_t *rhs)
static bool EndsWithCaseInsensitive(const std::string &str, const std::string &suffix)
static bool WideCStringEquals(const wchar_t *lhs, const wchar_t *rhs)
static std::string FormatIntWidth2(int value)
static std::string FormatHexInt(int value)
static bool CaseInsensitiveCStringEquals(const char *lhs, const char *rhs)
static std::string FormatByte(unsigned char value)
static std::string ShowWideCString(const wchar_t *wide_c_str)
static const char * CloneCString(const char *c_str)
Definition: ts_gtest.h:7455
virtual ~TestFactoryBase()
Definition: ts_gtest.h:7457
virtual Test * CreateTest()=0
TestFactoryBase()
Definition: ts_gtest.h:7464
Definition: ts_gtest.h:7473
virtual Test * CreateTest()
Definition: ts_gtest.h:7475
Definition: ts_gtest.h:2724
ThreadLocal()
Definition: ts_gtest.h:2726
T * pointer()
Definition: ts_gtest.h:2728
ThreadLocal(const T &value)
Definition: ts_gtest.h:2727
void set(const T &value)
Definition: ts_gtest.h:2731
const T * pointer() const
Definition: ts_gtest.h:2729
const T & get() const
Definition: ts_gtest.h:2730
Definition: ts_gtest.h:7423
static bool dummy_
Definition: ts_gtest.h:7428
unsigned int UInt
Definition: ts_gtest.h:3041
int Int
Definition: ts_gtest.h:3040
long long Int
Definition: ts_gtest.h:3052
unsigned long long UInt
Definition: ts_gtest.h:3053
Definition: ts_gtest.h:3025
void UInt
Definition: ts_gtest.h:3029
static void Print(const T &value, ::std::ostream *os)
Definition: ts_gtest.h:9914
static void Print(const T(&a)[N], ::std::ostream *os)
Definition: ts_gtest.h:9898
Definition: ts_gtest.h:9831
static void Print(const T &value, ::std::ostream *os)
Definition: ts_gtest.h:9843
static void Print(const T &value, ::std::ostream *os)
Definition: ts_gtest.h:9942
static void Print(const T(&value)[N], ::std::ostream *os)
Definition: ts_gtest.h:9949
static void Print(char *str, ::std::ostream *os)
Definition: ts_gtest.h:9967
static void Print(const char *str, ::std::ostream *os)
Definition: ts_gtest.h:9956
static void Print(const wchar_t *str, ::std::ostream *os)
Definition: ts_gtest.h:9976
static void Print(wchar_t *str, ::std::ostream *os)
Definition: ts_gtest.h:9989
Definition: ts_gtest.h:9933
static void Print(const T &value, ::std::ostream *os)
Definition: ts_gtest.h:9935
Definition: ts_gtest.h:10974
ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10)
Definition: ts_gtest.h:10976
Definition: ts_gtest.h:11008
ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11)
Definition: ts_gtest.h:11010
Definition: ts_gtest.h:11043
ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12)
Definition: ts_gtest.h:11045
Definition: ts_gtest.h:11080
ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13)
Definition: ts_gtest.h:11082
Definition: ts_gtest.h:11119
ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14)
Definition: ts_gtest.h:11121
Definition: ts_gtest.h:11159
ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15)
Definition: ts_gtest.h:11161
Definition: ts_gtest.h:11202
ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16)
Definition: ts_gtest.h:11204
Definition: ts_gtest.h:11247
ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17)
Definition: ts_gtest.h:11249
Definition: ts_gtest.h:11293
ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18)
Definition: ts_gtest.h:11295
Definition: ts_gtest.h:11341
ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19)
Definition: ts_gtest.h:11343
Definition: ts_gtest.h:10754
ValueArray1(T1 v1)
Definition: ts_gtest.h:10756
Definition: ts_gtest.h:11390
ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20)
Definition: ts_gtest.h:11392
Definition: ts_gtest.h:11442
ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21)
Definition: ts_gtest.h:11444
Definition: ts_gtest.h:11496
ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22)
Definition: ts_gtest.h:11498
Definition: ts_gtest.h:11551
ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23)
Definition: ts_gtest.h:11553
Definition: ts_gtest.h:11608
ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24)
Definition: ts_gtest.h:11610
Definition: ts_gtest.h:11667
ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25)
Definition: ts_gtest.h:11669
Definition: ts_gtest.h:11728
ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26)
Definition: ts_gtest.h:11730
Definition: ts_gtest.h:11790
ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27)
Definition: ts_gtest.h:11792
Definition: ts_gtest.h:11855
ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28)
Definition: ts_gtest.h:11857
Definition: ts_gtest.h:11921
ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29)
Definition: ts_gtest.h:11923
Definition: ts_gtest.h:10769
ValueArray2(T1 v1, T2 v2)
Definition: ts_gtest.h:10771
Definition: ts_gtest.h:11988
ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30)
Definition: ts_gtest.h:11990
Definition: ts_gtest.h:12059
ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31)
Definition: ts_gtest.h:12061
Definition: ts_gtest.h:12131
ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32)
Definition: ts_gtest.h:12133
Definition: ts_gtest.h:12204
ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33)
Definition: ts_gtest.h:12206
Definition: ts_gtest.h:12280
ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34)
Definition: ts_gtest.h:12282
Definition: ts_gtest.h:12357
ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35)
Definition: ts_gtest.h:12359
Definition: ts_gtest.h:12436
ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36)
Definition: ts_gtest.h:12438
Definition: ts_gtest.h:12517
ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37)
Definition: ts_gtest.h:12519
Definition: ts_gtest.h:12600
ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38)
Definition: ts_gtest.h:12602
Definition: ts_gtest.h:12684
ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39)
Definition: ts_gtest.h:12686
Definition: ts_gtest.h:10788
ValueArray3(T1 v1, T2 v2, T3 v3)
Definition: ts_gtest.h:10790
Definition: ts_gtest.h:12770
ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40)
Definition: ts_gtest.h:12772
Definition: ts_gtest.h:12859
ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41)
Definition: ts_gtest.h:12861
Definition: ts_gtest.h:12949
ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42)
Definition: ts_gtest.h:12951
Definition: ts_gtest.h:13041
ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43)
Definition: ts_gtest.h:13043
Definition: ts_gtest.h:13134
ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44)
Definition: ts_gtest.h:13136
Definition: ts_gtest.h:13229
ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45)
Definition: ts_gtest.h:13231
Definition: ts_gtest.h:13327
ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46)
Definition: ts_gtest.h:13329
Definition: ts_gtest.h:13426
ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47)
Definition: ts_gtest.h:13428
Definition: ts_gtest.h:13527
ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48)
Definition: ts_gtest.h:13529
Definition: ts_gtest.h:13630
ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49)
Definition: ts_gtest.h:13632
Definition: ts_gtest.h:10809
ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4)
Definition: ts_gtest.h:10811
Definition: ts_gtest.h:13734
ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, T50 v50)
Definition: ts_gtest.h:13736
Definition: ts_gtest.h:10832
ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5)
Definition: ts_gtest.h:10834
Definition: ts_gtest.h:10857
ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6)
Definition: ts_gtest.h:10859
Definition: ts_gtest.h:10884
ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7)
Definition: ts_gtest.h:10886
Definition: ts_gtest.h:10912
ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8)
Definition: ts_gtest.h:10914
Definition: ts_gtest.h:10942
ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9)
Definition: ts_gtest.h:10944
Definition: ts_gtest.h:10328
virtual ParamIteratorInterface< T > * Begin() const
Definition: ts_gtest.h:10335
virtual ParamIteratorInterface< T > * End() const
Definition: ts_gtest.h:10338
ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end)
Definition: ts_gtest.h:10331
virtual ~ValuesInIteratorRangeGenerator()
Definition: ts_gtest.h:10333
Definition: ts_gtest.h:9110
void join_new()
Definition: ts_gtest.h:9113
bool depart() GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex)
Definition: ts_gtest.h:9141
void join(linked_ptr_internal const *ptr) GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex)
Definition: ts_gtest.h:9129
Definition: ts_gtest.h:9157
linked_ptr & operator=(linked_ptr< U > const &ptr)
Definition: ts_gtest.h:9174
bool operator!=(T *p) const
Definition: ts_gtest.h:9198
T element_type
Definition: ts_gtest.h:9159
bool operator!=(linked_ptr< U > const &ptr) const
Definition: ts_gtest.h:9204
linked_ptr & operator=(linked_ptr const &ptr)
Definition: ts_gtest.h:9180
linked_ptr(linked_ptr< U > const &ptr)
Definition: ts_gtest.h:9167
T & operator*() const
Definition: ts_gtest.h:9195
bool operator==(linked_ptr< U > const &ptr) const
Definition: ts_gtest.h:9200
void reset(T *ptr=NULL)
Definition: ts_gtest.h:9189
T * operator->() const
Definition: ts_gtest.h:9194
linked_ptr(linked_ptr const &ptr)
Definition: ts_gtest.h:9168
T * get() const
Definition: ts_gtest.h:9193
bool operator==(T *p) const
Definition: ts_gtest.h:9197
linked_ptr(T *ptr=NULL)
Definition: ts_gtest.h:9163
~linked_ptr()
Definition: ts_gtest.h:9164
Definition: ts_gtest.h:2048
T & operator*() const
Definition: ts_gtest.h:2055
T * operator->() const
Definition: ts_gtest.h:2056
T * get() const
Definition: ts_gtest.h:2057
T * release()
Definition: ts_gtest.h:2059
~scoped_ptr()
Definition: ts_gtest.h:2053
void reset(T *p=NULL)
Definition: ts_gtest.h:2065
scoped_ptr(T *p=NULL)
Definition: ts_gtest.h:2052
T element_type
Definition: ts_gtest.h:2050
CvCmpFunc func
Definition: core_c.h:1072
const CvArr const CvArr CvArr * result
Definition: core_c.h:806
const char * ptr
Definition: core_c.h:942
const void * first
Definition: core_c.h:1452
double double end
Definition: core_c.h:774
const void * elem
Definition: core_c.h:1075
double start
Definition: core_c.h:774
CvPoint CvPoint CvScalar color
Definition: core_c.h:1271
const char const char * str
Definition: core_c.h:1553
CvFileNode const CvStringHashNode * key
Definition: core_c.h:1585
int index
Definition: core_c.h:309
const char const char const char int line
Definition: core_c.h:1745
int int type
Definition: core_c.h:109
const CvArr * U
Definition: core_c.h:733
void int step
Definition: core_c.h:403
const void int len
Definition: core_c.h:1569
int CvScalar value
Definition: core_c.h:340
const char * name
Definition: core_c.h:1538
const char const char const char * file_name
Definition: core_c.h:1745
const void * src
Definition: core_c.h:1568
#define NULL
Definition: environ.h:263
char * argv[]
Definition: highgui_c.h:81
int int int void * param
Definition: highgui_c.h:187
char int argc
Definition: highgui_c.h:81
int x
Definition: highgui_c.h:187
typedef void(CV_CDECL *CvMouseCallback)(int event
int number
Definition: imgproc_c.h:478
CvArr CvSize range
Definition: imgproc_c.h:501
int CvSeq float CvSize2D32f int flag
Definition: legacy.hpp:239
CvPoint2D32f float a
Definition: legacy.hpp:578
CvPoint2D32f float float float c
Definition: legacy.hpp:578
int int int * second
Definition: legacy.hpp:1117
int n
Definition: legacy.hpp:3070
const CvMat CvMat CvMat int k
Definition: legacy.hpp:3053
CvPoint2D32f float float b
Definition: legacy.hpp:578
void void * output
Definition: legacy.hpp:84
true
Definition: color.hpp:221
false
Definition: color.hpp:230
CV_EXPORTS void repeat(const oclMat &src, int ny, int nx, oclMat &dst)
fills the output array with repeated copies of the input array
CV_EXPORTS void set(Mat &dst, const Scalar &gamma, const Mat &mask=Mat())
CV_EXPORTS void copy(const Mat &src, Mat &dst, const Mat &mask=Mat(), bool invertMask=false)
Definition: ts_gtest.h:7088
class GTEST_2_TUPLE_(T)
Definition: ts_gtest.h:925
bool operator!=(const GTEST_10_TUPLE_(T)&t, const GTEST_10_TUPLE_(U)&u)
Definition: ts_gtest.h:1662
const T1 const T2 const T3 & f3
Definition: ts_gtest.h:1374
const T1 const T2 const T3 const T4 const T5 const T6 const T7 const T8 const T9 & f9
Definition: ts_gtest.h:1412
const T1 const T2 const T3 const T4 const T5 const T6 const T7 & f7
Definition: ts_gtest.h:1398
class GTEST_3_TUPLE_(T)
Definition: ts_gtest.h:968
class GTEST_6_TUPLE_(T)
Definition: ts_gtest.h:1090
GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) get(GTEST_10_TUPLE_(T) &t)
Definition: ts_gtest.h:1610
class GTEST_5_TUPLE_(T)
Definition: ts_gtest.h:1046
class GTEST_4_TUPLE_(T)
Definition: ts_gtest.h:1005
const T1 const T2 const T3 const T4 const T5 const T6 & f6
Definition: ts_gtest.h:1392
const T1 const T2 & f2
Definition: ts_gtest.h:1368
class GTEST_1_TUPLE_(T)
Definition: ts_gtest.h:893
const T1 & f1
Definition: ts_gtest.h:1363
const T1 const T2 const T3 const T4 const T5 & f5
Definition: ts_gtest.h:1386
GTEST_10_TUPLE_(T) make_tuple(const T0 &f0
class GTEST_8_TUPLE_(T)
Definition: ts_gtest.h:1186
class GTEST_7_TUPLE_(T)
Definition: ts_gtest.h:1137
class GTEST_9_TUPLE_(T)
Definition: ts_gtest.h:1238
const T1 const T2 const T3 const T4 const T5 const T6 const T7 const T8 & f8
Definition: ts_gtest.h:1405
const T1 const T2 const T3 const T4 & f4
Definition: ts_gtest.h:1380
GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) get(const GTEST_10_TUPLE_(T) &t)
Definition: ts_gtest.h:1616
bool operator==(const GTEST_10_TUPLE_(T)&t, const GTEST_10_TUPLE_(U)&u)
Definition: ts_gtest.h:1654
tuple make_tuple()
Definition: ts_gtest.h:1355
Definition: ts_gtest.h:792
Definition: ts_gtest.h:9362
const size_t kProtobufOneLinerMaxLength
Definition: ts_gtest.h:9396
GTEST_API_ void PrintBytesInObjectTo(const unsigned char *obj_bytes, size_t count, ::std::ostream *os)
TypeKind
Definition: ts_gtest.h:9372
@ kProtobuf
Definition: ts_gtest.h:9373
@ kConvertibleToInteger
Definition: ts_gtest.h:9374
@ kOtherType
Definition: ts_gtest.h:9376
int Close(int fd)
Definition: ts_gtest.h:2947
int IsATTY(int fd)
Definition: ts_gtest.h:2900
int ChDir(const char *dir)
Definition: ts_gtest.h:2928
int StrCaseCmp(const char *s1, const char *s2)
Definition: ts_gtest.h:2902
int Stat(const char *path, StatStruct *buf)
Definition: ts_gtest.h:2901
int FileNo(FILE *file)
Definition: ts_gtest.h:2899
int Read(int fd, void *buf, unsigned int count)
Definition: ts_gtest.h:2941
const char * StrNCpy(char *dest, const char *src, size_t n)
Definition: ts_gtest.h:2919
char * StrDup(const char *src)
Definition: ts_gtest.h:2905
void Abort()
Definition: ts_gtest.h:2974
const char * StrError(int errnum)
Definition: ts_gtest.h:2948
FILE * FReopen(const char *path, const char *mode, FILE *stream)
Definition: ts_gtest.h:2934
FILE * FDOpen(int fd, const char *mode)
Definition: ts_gtest.h:2937
struct stat StatStruct
Definition: ts_gtest.h:2897
const char * GetEnv(const char *name)
Definition: ts_gtest.h:2950
int RmDir(const char *dir)
Definition: ts_gtest.h:2906
bool IsDir(const StatStruct &st)
Definition: ts_gtest.h:2907
int Write(int fd, const void *buf, unsigned int count)
Definition: ts_gtest.h:2944
int FClose(FILE *fp)
Definition: ts_gtest.h:2939
FILE * FOpen(const char *path, const char *mode)
Definition: ts_gtest.h:2930
const char kDeathTestStyleFlag[]
Definition: ts_gtest.h:8268
FloatingPoint< float > Float
Definition: ts_gtest.h:7411
long long BiggestInt
Definition: ts_gtest.h:2807
void LogToStderr()
Definition: ts_gtest.h:2201
void(* TearDownTestCaseFunc)()
Definition: ts_gtest.h:7493
GTestMutexLock MutexLock
Definition: ts_gtest.h:2721
class UnitTestImpl * GetUnitTestImpl()
To DownCast_(From *f)
Definition: ts_gtest.h:2280
void CopyArray(const T(&from)[N], U(*to)[N])
Definition: ts_gtest.h:7954
GTEST_API_ TypeId GetTestTypeId()
GTEST_API_::std::string FormatCompilerIndependentFileLocation(const char *file, int line)
void FlushInfoLog()
Definition: ts_gtest.h:2202
GTEST_API_ Int32 Int32FromGTestEnv(const char *flag, Int32 default_val)
TypeWithSize< 8 >::Int Int64
Definition: ts_gtest.h:3060
void PrintTupleTo(const T &t, ::std::ostream *os)
Definition: ts_gtest.h:10077
void(* SetUpTestCaseFunc)()
Definition: ts_gtest.h:7492
void UniversalPrint(const T &value, ::std::ostream *os)
Definition: ts_gtest.h:10004
GTEST_API_::std::string FormatFileLocation(const char *file, int line)
const char kDeathTestUseFork[]
Definition: ts_gtest.h:8269
GTEST_API_ std::string GetCapturedStderr()
::std::wstring wstring
Definition: ts_gtest.h:2036
TypeWithSize< 4 >::UInt UInt32
Definition: ts_gtest.h:3059
bool AlwaysFalse()
Definition: ts_gtest.h:7681
bool IsDigit(char ch)
Definition: ts_gtest.h:2823
GTEST_API_ bool AlwaysTrue()
bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N])
Definition: ts_gtest.h:7914
GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
bool_constant< true > true_type
Definition: ts_gtest.h:2776
std::string GetTypeName()
Definition: ts_gtest.h:3807
FloatingPoint< double > Double
Definition: ts_gtest.h:7412
TypeWithSize< 8 >::Int TimeInMillis
Definition: ts_gtest.h:3062
bool BoolFromGTestEnv(const char *flag, bool default_val)
GTEST_API_ AssertionResult CmpHelperEQ(const char *expected_expression, const char *actual_expression, BiggestInt expected, BiggestInt actual)
bool IsXDigit(wchar_t ch)
Definition: ts_gtest.h:2838
TypeId GetTypeId()
Definition: ts_gtest.h:7438
GTEST_API_ AssertionResult CmpHelperSTRNE(const char *s1_expression, const char *s2_expression, const wchar_t *s1, const wchar_t *s2)
GTEST_API_ std::string StringStreamToString(::std::stringstream *stream)
::std::vector< string > Strings
Definition: ts_gtest.h:10012
void DefaultPrintTo(IsNotContainer, false_type, const T &value, ::std::ostream *os)
Definition: ts_gtest.h:9587
Strings UniversalTersePrintTupleFieldsToStrings(const Tuple &value)
Definition: ts_gtest.h:10088
const char * StringFromGTestEnv(const char *flag, const char *default_val)
bool IsAlNum(char ch)
Definition: ts_gtest.h:2820
bool IsUpper(char ch)
Definition: ts_gtest.h:2832
const char kInternalRunDeathTestFlag[]
Definition: ts_gtest.h:8270
void ReportFailureInUnknownLocation(TestPartResult::Type result_type, const std::string &message)
GTEST_API_ void ReportInvalidTestCaseType(const char *test_case_name, const char *file, int line)
GTEST_API_ void PrintStringTo(const ::std::string &s, ::std::ostream *os)
GTEST_API_ size_t GetThreadCount()
::std::string string
Definition: ts_gtest.h:2030
GTEST_API_ void CaptureStderr()
TypeWithSize< 4 >::Int Int32
Definition: ts_gtest.h:3058
GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char *expected_expression, const char *actual_expression, const char *expected, const char *actual)
std::string FormatForComparisonFailureMessage(const T1 &value, const T2 &)
Definition: ts_gtest.h:18908
Iter ArrayAwareFind(Iter begin, Iter end, const Element &elem)
Definition: ts_gtest.h:7933
To ImplicitCast_(To x)
Definition: ts_gtest.h:2256
GTEST_API_ const char kStackTraceMarker[]
GTestLogSeverity
Definition: ts_gtest.h:2172
@ GTEST_ERROR
Definition: ts_gtest.h:2175
@ GTEST_FATAL
Definition: ts_gtest.h:2176
@ GTEST_WARNING
Definition: ts_gtest.h:2174
@ GTEST_INFO
Definition: ts_gtest.h:2173
TypeWithSize< 8 >::UInt UInt64
Definition: ts_gtest.h:3061
GTEST_API_ bool SkipPrefix(const char *prefix, const char **pstr)
std::string StreamableToString(const T &streamable)
Definition: ts_gtest.h:3366
AssertionResult CmpHelperFloatingPointEQ(const char *expected_expression, const char *actual_expression, RawType expected, RawType actual)
Definition: ts_gtest.h:19163
const void * TypeId
Definition: ts_gtest.h:7420
GTEST_API_ bool IsTrue(bool condition)
char(& IsNullLiteralHelper(...))[2]
bool_constant< false > false_type
Definition: ts_gtest.h:2775
char IsNotContainer
Definition: ts_gtest.h:7888
bool ParseInt32(const Message &src_text, const char *str, Int32 *value)
char ToUpper(char ch)
Definition: ts_gtest.h:2846
bool IsLower(char ch)
Definition: ts_gtest.h:2826
GTEST_API_ int g_init_gtest_count
GTEST_API_ AssertionResult EqFailure(const char *expected_expression, const char *actual_expression, const std::string &expected_value, const std::string &actual_value, bool ignoring_case)
linked_ptr< T > make_linked_ptr(T *ptr)
Definition: ts_gtest.h:9247
GTEST_API_ void CaptureStdout()
void PrintRawArrayTo(const T a[], size_t count, ::std::ostream *os)
Definition: ts_gtest.h:9699
GTEST_API_ TestInfo * MakeAndRegisterTestInfo(const char *test_case_name, const char *name, const char *type_param, const char *value_param, TypeId fixture_class_id, SetUpTestCaseFunc set_up_tc, TearDownTestCaseFunc tear_down_tc, TestFactoryBase *factory)
int IsContainer
Definition: ts_gtest.h:7880
const BiggestInt kMaxBiggestInt
Definition: ts_gtest.h:3003
char ToLower(char ch)
Definition: ts_gtest.h:2843
GTEST_API_ void UniversalPrintArray(const wchar_t *begin, size_t len, ::std::ostream *os)
GTEST_API_ void PrintWideStringTo(const ::std::wstring &s, ::std::ostream *os)
GTEST_API_ AssertionResult CmpHelperSTREQ(const char *expected_expression, const char *actual_expression, const wchar_t *expected, const wchar_t *actual)
GTEST_API_ std::string GetCurrentOsStackTraceExceptTop(UnitTest *unit_test, int skip_count)
GTEST_API_ AssertionResult DoubleNearPredFormat(const char *expr1, const char *expr2, const char *abs_error_expr, double val1, double val2, double abs_error)
bool IsAlpha(char ch)
Definition: ts_gtest.h:2817
RelationToSource
Definition: ts_gtest.h:7970
@ kCopy
Definition: ts_gtest.h:7972
@ kReference
Definition: ts_gtest.h:7971
GTEST_API_ std::string GetCapturedStdout()
GTEST_API_ std::string GetBoolAssertionFailureMessage(const AssertionResult &assertion_result, const char *expression_text, const char *actual_predicate_value, const char *expected_predicate_value)
void PrintTo(const ::std::pair< T1, T2 > &value, ::std::ostream *os)
Definition: ts_gtest.h:9818
bool IsSpace(char ch)
Definition: ts_gtest.h:2829
IsNotContainer IsContainerTest(long)
Definition: ts_gtest.h:7890
Derived * CheckedDowncastToActualType(Base *base)
Definition: ts_gtest.h:2303
GTEST_API_ std::string AppendUserMessage(const std::string >est_msg, const Message &user_msg)
void UniversalTersePrint(const T &value, ::std::ostream *os)
Definition: ts_gtest.h:9995
Definition: ts_gtest.h:9465
void DefaultPrintNonContainerTo(const T &value, ::std::ostream *os)
Definition: ts_gtest.h:9470
Definition: ts_gtest.h:1943
internal::CartesianProductHolder10< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 > Combine(const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7, const Generator8 &g8, const Generator9 &g9, const Generator10 &g10)
Definition: ts_gtest.h:16993
internal::ParamGenerator< bool > Bool()
Definition: ts_gtest.h:16847
GTEST_API_ AssertionResult IsNotSubstring(const char *needle_expr, const char *haystack_expr, const ::std::wstring &needle, const ::std::wstring &haystack)
Environment * AddGlobalTestEnvironment(Environment *env)
Definition: ts_gtest.h:18795
GTEST_API_ AssertionResult IsSubstring(const char *needle_expr, const char *haystack_expr, const ::std::wstring &needle, const ::std::wstring &haystack)
bool StaticAssertTypeEq()
Definition: ts_gtest.h:20039
GTEST_API_ AssertionResult FloatLE(const char *expr1, const char *expr2, float val1, float val2)
GTEST_API_ void InitGoogleTest(int *argc, wchar_t **argv)
GTEST_API_ AssertionResult AssertionSuccess()
AssertionResult AssertPred1Helper(const char *pred_text, const char *e1, Pred pred, const T1 &v1)
Definition: ts_gtest.h:19492
GTEST_API_ AssertionResult DoubleLE(const char *expr1, const char *expr2, double val1, double val2)
internal::ParamGenerator< T > Range(T start, T end)
Definition: ts_gtest.h:15875
internal::TimeInMillis TimeInMillis
Definition: ts_gtest.h:17934
::std::string PrintToString(const T &value)
Definition: ts_gtest.h:10099
AssertionResult AssertPred2Helper(const char *pred_text, const char *e1, const char *e2, Pred pred, const T1 &v1, const T2 &v2)
Definition: ts_gtest.h:19534
internal::ParamGenerator< typename Container::value_type > ValuesIn(const Container &container)
Definition: ts_gtest.h:15950
internal::ValueArray50< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50 > Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, T50 v50)
Definition: ts_gtest.h:16810
AssertionResult AssertPred3Helper(const char *pred_text, const char *e1, const char *e2, const char *e3, Pred pred, const T1 &v1, const T2 &v2, const T3 &v3)
Definition: ts_gtest.h:19583
AssertionResult AssertPred5Helper(const char *pred_text, const char *e1, const char *e2, const char *e3, const char *e4, const char *e5, Pred pred, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5)
Definition: ts_gtest.h:19702
const int kMaxStackTraceDepth
Definition: ts_gtest.h:17624
AssertionResult AssertPred4Helper(const char *pred_text, const char *e1, const char *e2, const char *e3, const char *e4, Pred pred, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4)
Definition: ts_gtest.h:19639
GTEST_API_ AssertionResult AssertionFailure(const Message &msg)
T & type
Definition: ts_gtest.h:819
Definition: ts_gtest.h:817
T & type
Definition: ts_gtest.h:817
T & type
Definition: ts_gtest.h:809
Definition: ts_gtest.h:807
const T & type
Definition: ts_gtest.h:807
static bool Eq(const Tuple1 &, const Tuple2 &)
Definition: ts_gtest.h:1637
static bool Eq(const Tuple1 &t1, const Tuple2 &t2)
Definition: ts_gtest.h:1645
Definition: ts_gtest.h:1632
T0 type
Definition: ts_gtest.h:834
T1 type
Definition: ts_gtest.h:839
T2 type
Definition: ts_gtest.h:844
T3 type
Definition: ts_gtest.h:849
T4 type
Definition: ts_gtest.h:854
T5 type
Definition: ts_gtest.h:859
T6 type
Definition: ts_gtest.h:864
T7 type
Definition: ts_gtest.h:869
T8 type
Definition: ts_gtest.h:874
T9 type
Definition: ts_gtest.h:879
Definition: ts_gtest.h:830
Definition: ts_gtest.h:1476
Definition: ts_gtest.h:1418
T & type
Definition: ts_gtest.h:7777
Definition: ts_gtest.h:7775
T & type
Definition: ts_gtest.h:7775
Definition: ts_gtest.h:1970
Definition: ts_gtest.h:7717
Definition: ts_gtest.h:7686
const char * value
Definition: ts_gtest.h:7689
ConstCharPtr(const char *str)
Definition: ts_gtest.h:7687
void type
Definition: ts_gtest.h:7897
Definition: ts_gtest.h:7896
Definition: ts_gtest.h:7856
T value_type
Definition: ts_gtest.h:2791
T value_type
Definition: ts_gtest.h:2796
Definition: ts_gtest.h:2785
Iterator::value_type value_type
Definition: ts_gtest.h:2786
T type
Definition: ts_gtest.h:7742
Definition: ts_gtest.h:7740
T type
Definition: ts_gtest.h:7740
T type
Definition: ts_gtest.h:7729
Definition: ts_gtest.h:7727
T type
Definition: ts_gtest.h:7727
Definition: ts_gtest.h:2022
static void TersePrintPrefixToStrings(const Tuple &, Strings *)
Definition: ts_gtest.h:10051
static void PrintPrefixTo(const Tuple &, ::std::ostream *)
Definition: ts_gtest.h:10048
static void PrintPrefixTo(const Tuple &t, ::std::ostream *os)
Definition: ts_gtest.h:10061
static void TersePrintPrefixToStrings(const Tuple &t, Strings *strings)
Definition: ts_gtest.h:10067
Definition: ts_gtest.h:10023
static void PrintPrefixTo(const Tuple &t, ::std::ostream *os)
Definition: ts_gtest.h:10026
static void TersePrintPrefixToStrings(const Tuple &t, Strings *strings)
Definition: ts_gtest.h:10036
Definition: ts_gtest.h:2769
bool_constant< bool_value > type
Definition: ts_gtest.h:2770
Definition: ts_gtest.h:2779
#define inline
Definition: system.h:195
#define S_ISDIR(mode)
Definition: system.h:182
const CvArr CvArr CvArr const CvPoint2D32f CvPoint2D32f int CvSize int char * status
Definition: tracking.hpp:80
#define TEST_F(test_fixture, test_name)
Definition: ts_gtest.h:20105
#define GTEST_DECLARE_bool_(name)
Definition: ts_gtest.h:3070
#define GTEST_TUPLE_ELEMENT_(k, Tuple)
Definition: ts_gtest.h:1481
#define GTEST_DECLARE_TUPLE_AS_FRIEND_
Definition: ts_gtest.h:739
#define GTEST_CHECK_POSIX_SUCCESS_(posix_call)
Definition: ts_gtest.h:2230
#define GTEST_IMPL_CMP_HELPER_(op_name, op)
Definition: ts_gtest.h:19035
#define GTEST_LOCK_EXCLUDED_(locks)
Definition: ts_gtest.h:3086
#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType)
Definition: ts_gtest.h:18851
int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_
Definition: ts_gtest.h:20121
#define GTEST_REMOVE_REFERENCE_AND_CONST_(T)
Definition: ts_gtest.h:7768
#define GTEST_MUST_USE_RESULT_
Definition: ts_gtest.h:1896
#define GTEST_DECLARE_string_(name)
Definition: ts_gtest.h:3073
#define GTEST_API_
Definition: ts_gtest.h:1926
#define GTEST_DECLARE_int32_(name)
Definition: ts_gtest.h:3071
#define GTEST_CHECK_(condition)
Definition: ts_gtest.h:2218
#define TEST_P(test_case_name, test_name)
Definition: ts_gtest.h:17007
#define EXPECT_TRUE(condition)
Definition: ts_gtest.h:19391
#define GTEST_DISALLOW_ASSIGN_(type)
Definition: ts_gtest.h:1879
#define GTEST_ATTRIBUTE_UNUSED_
Definition: ts_gtest.h:1874
#define GTEST_0_TUPLE_(T)
Definition: ts_gtest.h:745
#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType)
Definition: ts_gtest.h:18870
#define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator)
Definition: ts_gtest.h:17033
void operator<<(const testing::internal::Secret &, int)
#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)
Definition: ts_gtest.h:1884
#define GTEST_DECLARE_STATIC_MUTEX_(mutex)
Definition: ts_gtest.h:2711